Ранее мы уже рассматривали как добавить блок «Похожие записи» на WordPress сайт и создавали список популярных тегов с изображениями в стиле Mashable. В этой статье речь пойдет о том, как отслеживать и показывать самые популярные посты на сайте без использования каких-либо плагинов для WordPress.

Пример такого кастомизированного отображения самых популярных постов приведен на следующем скриншоте:

Для начала нам надо создать функцию, которая будет определять количество просмотров для каждого поста и сохранять это значение в отдельном настраиваемом поле для каждой записи. Чтобы сделать это, вставьте следующий код в файл вашей темы functions.php:

function wpb_set_post_views($postID) {
    $count_key = 'wpb_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);
    }
}
//To keep the count accurate, lets get rid of prefetching
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);

Теперь после вставки функции на нужное место нам надо вызвать эту функцию для отдельных страниц с публикациями. Так функция будет "знать", какой из постов выбрать и дать ему наивысшую оценку на базе числа собранных просмотров. Для этой цели следующий код надо поместить в цикл для записей в файле single.php:

wpb_set_post_views(get_the_ID());

Если вы используете дочернюю тему или просто хотите облегчить себе задачу, то просто добавьте отслеживающий параметр в заголовок поста при помощи wp_head. Добавьте следующий код в файл функций вашей темы под названием functions.php:

function wpb_track_post_views ($post_id) {
    if ( !is_single() ) return;
    if ( empty ( $post_id) ) {
        global $post;
        $post_id = $post->ID;    
    }
    wpb_set_post_views($post_id);
}
add_action( 'wp_head', 'wpb_track_post_views');

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

Примечание: Если вы используете кэширующий плагин, этот способ по умолчанию работать НЕ будет.

Мы используем плагин W3 Total Cache, в нем есть опция под названием "фрагментированное кэширование" (Fragmented Caching). Вы тоже можете использовать этот плагин и данную опцию, чтобы все работало как следует. Вот что надо изменить:

<!-- mfunc wpb_set_post_views($post_id); --><!-- /mfunc -->

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

Если вы хотите отображать счетчик просмотров для страниц постов (часто рядом с числом комментариев к записи или чем-то таким), то первое, что вам стоит сделать, — это добавить в файл темы functions.php следующий код:

function wpb_get_post_views($postID){
    $count_key = 'wpb_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';
}

Затем в цикл записи файла single.php добавьте следующий код:

wpb_get_post_views(get_the_ID());

Если вы хотите отсортировать записи по количеству их просмотров, вы можете это легко сделать с помощью wp_query post_meta параметра. Простой пример такого цикла будет выглядеть вот так:

<?php 
$popularpost = new WP_Query( array( 'posts_per_page' => 4, 'meta_key' => 'wpb_post_views_count', 'orderby' => 'wpb_post_views_count', 'order' => 'DESC'  ) );
while ( $popularpost->have_posts() ) : $popularpost->the_post();

the_title();

endwhile;
?>

Чтобы добавить другие параметры WP_Query (такие, как промежуток времени), воспользуйтесь рекомендациями из раздела WP_Query в Codex.

Надеемся, эти советы вам помогут.

Источник: WPBeginner.com

Вам понравился материал?

Добавить комментарий

Такой e-mail уже зарегистрирован. Воспользуйтесь формой входа или введите другой.

Вы ввели некорректные логин или пароль

Извините, для комментирования необходимо войти.

13 комментариев

сначала новые
по рейтингу сначала новые по хронологии
Икарус

КГ/АМ.
Аффтар, написал бы хоть как это говно вывести потом.

Здравствуйте. Подскажите пожалуйста, а как вот тут установить вместо рамномных записей например чтобы выводилось из категории под ID6

switch($user_selected_categorie){
case 'random':{

$top_tabs_categorys[$key]['category_name']=__('Random Posts','best-magazine');
$top_tabs_categorys[$key]['query']='orderby=rand&ignore_sticky_posts=1&posts_per_page='.$count_of_posts;

break;
}

Куда вставлять это кусок кода ? Где то прочитал что в wp-content.php. но этот метод не работает, просто перестает загружаться сайт ! Что делать ?

В уроке написано, в файл functions.php

интересная статья!!!

Подскажите плиз, куда вставлять код чтобы популярные записи были в конце каждой статьи????
Заранее благодарен!

Большое спасибо, буду пробовать!!!!

Афтар написал хуйни нам тут

Дачник

как влияет на нагрузку WP данный способ ?*

Точно так же, как и любой другой плагин) Практически никак.

автор, а где будет появлятся это творение?????????? сайдбар футер хедер, ты же не указал

Это на ваше усмотрение, смотря куда вы вставите код. Можно в конце каждой записи, можно в начале каждой записи, можно в сайдбаре.

вот я и не нашел тот самый код