Отслеживаем просмотры постов в WordPress без плагина с помощью Post Meta

Вы ищете способ отслеживать просмотры постов без плагина с помощью post meta? Хотя для этого, вероятно, существует плагин, мы создали быстрый сниппет, который вы можете использовать для отслеживания просмотров постов без плагина с помощью post meta в WordPress.

Добавьте этот код в файл functions.php вашей темы или в свой файл нового плагина:

function getPostViews($postID){
    $count_key = 'post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if($count==''){
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, '0');
        return "0 View";
    }
    return $count.' Views';
}
function setPostViews($postID) {
    $count_key = 'post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if($count==''){
        $count = 0;
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, '0');
    }else{
        $count++;
        update_post_meta($postID, $count_key, $count);
    }
}
 
// Устранение проблем с предварительной выборкой, добавляющей дополнительные просмотры
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0); 

По желанию добавьте код ниже, чтобы в админке WordPress появилась колонка в которой отображаются просмотры постов/статей:

// добавление колонки в WP-Admin
add_filter('manage_posts_columns', 'posts_column_views');
add_action('manage_posts_custom_column', 'posts_custom_column_views',5,2);
function posts_column_views($defaults){
    $defaults['post_views'] = __('Views');
    return $defaults;
}
function posts_custom_column_views($column_name, $id){
    if($column_name === 'post_views'){
        echo getPostViews(get_the_ID());
    }
}

Эта часть кода отслеживания просмотров будет устанавливать просмотры постов. Просто поместите этот код ниже в файл single.php внутри цикла WordPress.

<?php
    setPostViews(get_the_ID());
?>

Вопрос кеширования

Если вы используете плагин кэширования, например W3 Total Cache, то описанный выше метод установки просмотров не будет работать, поскольку функция setPostViews() никогда не будет выполняться.

Однако в W3 Total Cache есть функция, называемая «кэшированием фрагментов». Вместо описанного выше способа используйте следующее и тогда функция setPostViews() будет работать нормально и отслеживать все просмотры ваших постов, даже если включено кэширование.

<!-- mfunc setPostViews(get_the_ID()); --><!-- /mfunc -->

Приведенный ниже код не является обязательным. Используйте этот код, если вы хотите отображать количество просмотров в ваших постах. Поместите этот код в цикл.

<?php 
    echo getPostViews(get_the_ID());
?>

На этом всё. Если у вас есть вопросы — пишите в комментариях ниже.

Опубликовано 3 октября 2024 в 18:09
Обновлено 4 ноября 2024 в 13:22
Категория: Блог
Теги: ,
Мы используем cookie-файлы для наилучшего представления нашего сайта. Продолжая использовать этот сайт, вы соглашаетесь с использованием cookie-файлов.
Принять
Политика конфиденциальности