В настоящее время я использую тему WordPress на видеохостинге, похожем на YouTube. Когда пользователи смотрят видео на моем сайте, счетчик просмотров увеличивается на 1.
Недавно я включил плагин WP Total Cache, и теперь количество просмотров не увеличивается каждый раз, когда пользователь щелкает видео, поскольку счетчик основан на куки / сеансе пользователя.
Код ниже — это код, который используется для счетчика просмотров. Я не очень понимаю, но я пытаюсь понять, что я могу изменить, чтобы увеличить счетчик каждый раз, когда пользователь нажимает на видео:
if( !function_exists('mars_get_count_viewed') ){
function mars_get_count_viewed() {
global $post;
if( isset( $post->ID ) && function_exists( 'stats_get_csv' ) ){
if( get_transient( 'postviews_' . $post->ID ) !== false ){
return get_transient( 'postviews_' . $post->ID );
}
$random = mt_rand( 9999, 999999999 ); // hack to break cache bug
$args = array(
'days' => $random,
'post_id' => $post->ID,
);
$stats = stats_get_csv( 'postviews', $args );
$views = ( isset( $stats['0']['views'] ) && $stats['0']['views'] > 0 ) ? $stats['0']['views'] : 0;
$views = (int)$views;
if( $views > 0 ){
// save transient.
// 1/2 day.
set_transient( 'postviews_' . $post->ID , $views, 60*60*1*6 );
}
return $views;
}
return get_post_meta( $post->ID,'count_viewed',true );
}
}
if( !function_exists('mars_update_post_view') ){
function mars_update_post_view() {
global $post;
if(!isset($_SESSION)){ session_start();}
if( is_single() ){
if( isset( $_SESSION['count_viewed'] ) ){
if( in_array( $post->ID, $_SESSION['count_viewed'] ) ){
return;
}
}
$current_viewed = mars_get_count_viewed();
update_post_meta($post->ID, 'count_viewed', $current_viewed + 1);
$_SESSION['count_viewed'][] = $post->ID;
}
}
add_action('wp', 'mars_update_post_view');
}
Как вы можете видеть mars_get_count_viewed Функция просто получает текущие просмотры на видео. Поэтому мне нужно будет изменить код в mars_update_post_view.
Может быть, я могу удалить сеанс и просто обновить для каждого просмотра?
Задача ещё не решена.
Других решений пока нет …