@sergo573

Как запретить повторное добавление просмотра записи одним пользователем в плагине WP-PostViews?

Есть плагин: WP-PostViews

Считает просмотры записей и выводит их, но вот в чём проблема, сколько раз человек обновит страницу столько раз и засчитает просмотры...

Нашёл код на просторах интернета, который предотвращает это:

spoiler

function remove_view_counter_wpse_102637() {
if ( ! empty( $_COOKIE[ USER_COOKIE . '_views' ] ) ) {
    $viewed = array_map( 'intval', explode( ',', $_COOKIE[ USER_COOKIE . '_views' ] ) );
    if ( in_array( $post->ID, $viewed ) )
        remove_action( 'wp_head', 'process_postviews' );
}
global $post;
$current_user = wp_get_current_user();

if (
  is_single() 
  && !empty($current_user)
  && $post->post_author == $current_user->ID
) {
  remove_action('wp_head', 'process_postviews');
}
}
add_action('wp_head', 'remove_view_counter_wpse_102637',1);

function wpse_104324_prevent_multiple_views( $meta_id, $object_id, $meta_key, $meta_value ) {
    if ( $meta_key === 'views' ) {
        if ( ! empty( $_COOKIE[ USER_COOKIE . '_views' ] ) )
            $viewed = array_map( 'intval', explode( ',', $_COOKIE[ USER_COOKIE . '_views' ] ) );
        else
            $viewed = array();

        $viewed[] = $object_id;
        setcookie(
            USER_COOKIE . '_views',
            implode(
                ',', $viewed
            ),
            time() + 31536000,
            COOKIEPATH,
            COOKIE_DOMAIN,
            false,
            true
        );
    }
}

add_action( 'updated_post_meta', 'wpse_104324_prevent_multiple_views', 10, 4 );
add_action( 'added_post_meta',   'wpse_104324_prevent_multiple_views', 10, 4 );



Видимо плагин обновился, что-то изменилось, и теперь этот код не работает, сможете помочь?

UPD:
Пишет такую ошибку, причём только на мобильном, но не работает как на мобильном так и на ПК:
Warning: Cannot modify header information - header already sent by (output started at ...) in ...
Я так понял он ругается, что функция cookie должна быть вызвана до появления чего либо, но как правильно переписать данный код?...
  • Вопрос задан
  • 41 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы