Intereting Posts
Почему цикл не пуст на некоторых 404-х? Многопользовательский htaccess на localhost с WP как внешний SVN? Использование is_front_page в sidebar.php Pull Custom / wp-admin / css для Non-Admin в Multisite пользовательский почтовый тип не работает. Постоянная ссылка: postname ЗА ИСКЛЮЧЕНИЕМ для блога Отдельная страница пользовательского типа сообщения, не отображающего содержание сообщения Миграция WordPress: получение 404 ошибок: работает только домашняя страница Довольно URL-адреса и пользовательские типы сообщений get_categories для настраиваемого типа сообщений с привязкой к конкретной пользовательской таксономии Комментарии WordPress просто исчезли, даже около 250 из них. Куда они делись? Запрос WP с пользовательской таксономией Меню, созданное в режиме редактирования темы, не имеет активных состояний, установленных на дочерних страницах Как настроить wp multisite? Как определить базовые страницы категории и / тега?

Количество раз, когда звуковой файл воспроизводился с помощью пользовательского плеера

Я увидел вопрос и ответ на вопрос «Как получить количество раз, когда был воспроизведен аудиофайл», и я ищу тот же результат, но я не использую собственный аудиоплеер 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; } ); 

Как получить те же результаты с помощью этого Scamp-плеера?

Сначала создайте метабокс с настраиваемым полем, чтобы добавить счетчик к вашей песне. Подобно

 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_player, т. Е.

 onTrackEnd: function() {} 

вы можете написать запрос Ajax по этой функции и обновить метафилд. Эта функция будет вызываться, когда дорожка закончится.

Надеюсь это поможет!! Счастливое кодирование