我已经在这里看到过类似的帖子:How to get the number of times an audio file has been played
但是@bonger提供的代码对我不起作用。我上传了新功能。php中包含以下代码,它不会在媒体编辑页面的比特率下显示播放计数。
在播放列表中计算音频文件的播放次数会很好。任何帮助都将不胜感激。
在Dreamweaver的新PHP文档中添加以下代码,第2、24、59和62行出现语法错误。
<?php
add_action( \'wp_footer\', function () {
?>
<script>
jQuery(document).ready(function() {
(function ($) {
var srcs = []; // Array of sources already sent to cut down on posts to server.
$(\'audio.wp-audio-shortcode, .wp-audio-playlist audio\').on(\'play\', function (event) {
// this.src should be the url (guid) of the audio file
if (this.src && $.inArray(this.src, srcs) === -1) {
srcs.push(this.src);
$.post( \'<?php echo admin_url( \'admin-ajax.php\' ); ?>\', {
action: \'wpse168584_audio_stats\',
guid: this.src.replace(/\\?.+$/, \'\'), // Remove any query vars.
nonce: \'<?php echo wp_create_nonce( \'wpse168584_audio_stats_\' ); ?>\'
}, null, \'json\'
);
}
});
})(jQuery);
});
</script>
<?php
} );
function wpse168584_audio_stats() {
$ret = array( \'error\' => false );
if ( ! check_ajax_referer( \'wpse168584_audio_stats_\', \'nonce\', false /*die*/ ) ) {
$ret[\'error\'] = __( \'Permission error\', \'wpfm\' );
} else {
if ( ! isset( $_REQUEST[\'guid\'] ) || ! ( $guid = $_REQUEST[\'guid\'] ) ) {
$ret[\'error\'] = __( \'Params error\', \'wpfm\' );
} else {
global $wpdb;
$sql = $wpdb->prepare( \'SELECT ID FROM \' . $wpdb->posts . \' WHERE guid = %s LIMIT 1\', $guid );
if ( $post_id = $wpdb->get_var( $sql ) ) {
// Use hex format to save space, 8 bytes for IPv4, 32 for IPv6.
$ip = bin2hex( inet_pton( preg_replace( \'/[^0-9a-fA-F:., ]/\', \'\', $_SERVER[\'REMOTE_ADDR\'] ) ) );
if ( ! ( $meta = get_post_meta( $post_id, \'_wp_attachment_metadata\', true ) )
|| ! isset( $meta[\'plays_ips\'] )
|| ! in_array( $ip, $plays_ips = explode( \';\', $meta[\'plays_ips\'] ) ) ) {
$plays_ips[] = $ip;
// If data getting too big, drop off oldest ip (FIFO).
if ( strlen( $meta[\'play_ids\'] ) > 1000 ) array_shift( $plays_ips );
// Save as string to save space.
$meta[\'plays_ips\'] = implode( \';\', $plays_ips );
$meta[\'plays\'] = isset( $meta[\'plays\'] ) ? $meta[\'plays\'] + 1 : 1;
update_post_meta( $post_id, \'_wp_attachment_metadata\', $meta );
}
}
}
}
wp_send_json( $ret );
}
add_action( \'wp_ajax_nopriv_wpse168584_audio_stats\', \'wpse168584_audio_stats\' );
add_action( \'wp_ajax_wpse168584_audio_stats\', \'wpse168584_audio_stats\' );
add_filter( \'media_submitbox_misc_sections\', function ( $arr ) {
$arr[\'plays\'] = __( \'Play Count:\' );
return $arr;
} );
?>