使用自定义播放器播放音频文件的次数

时间:2015-11-07 作者:Blessrc

我看到了问题&;回答“如何获得音频文件已播放的次数”,我正在寻找相同的结果,但我没有使用本机WP音频播放器。我正在使用一个自定义主题,其中包括一个名为Scamp player的自定义播放器。

以下是主题PHP中为玩家提供的内容:

if ( $panel_options && isset( $panel_options[\'scamp_player\'] ) && $panel_options[\'scamp_player\'] === \'on\' ) {
    require_once( plugin_dir_path( __FILE__ ) . \'includes/post-types/scamp-player.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;
} );
我如何使用这个流氓播放器获得相同的结果?

1 个回复
SO网友:Aishan

首先创建一个带有自定义字段的元盒,为歌曲添加计数器。就像

add_action( "add_meta_boxes", "amz_add_custom_meta_box" );
function amz_add_custom_meta_box() {
   global $post;
   if ( $post->post_type == \'music\' ) {
      add_meta_box( "counter-meta-box", "Total Played", "_custom_meta_box_markup", "music", "side", "high", null );
   }
}
然后,scamp\\U player上有一个函数,即。

onTrackEnd: function() {} 
您可以在此函数上编写Ajax请求并更新元字段。此函数将在曲目结束时调用。

希望这有帮助!!快乐编码

相关推荐

audio link produces black box

在chrome和firefox(可能还有其他浏览器)中,音频链接不会呈现媒体控制器。例如。[audio http://example.com/wp/wp-content/uploads/2011/09/file.mp3] 在Chrome中,查看页面源代码就地显示此代码:<div id=\"mep_0\" class=\"mejs-container\" style=\"width: 400px; height: 30px; \"> <div class=\"