Больше результатов...

Generic selectors
Только точные совпадения
Искать в заголовках
Искать в контенте
Post Type Selectors
Filter by Categories
FAQ
Hostenko
Вдохновение
Видеоуроки
Новости
Плагины
Темы
Уроки
Хаки

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

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

Как отображать популярные 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
редактор wpcafe
Изучает сайтостроение с 2008 года. Практикующий вебмастер, специализирующий на создание сайтов на WordPress. Задать вопрос Алексею можно на https://profiles.wordpress.org/wpthemeus/

Комментарии к записи: 13

Mergen Tundinov:

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

WordPresso:

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

Mergen Tundinov:

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

Дачник:

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

WordPresso:

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

Женя:

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

Юрий:

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

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

WPcafe.org:

В single.php после

Юрий:

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

Костя:

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

WPcafe.org:

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

Артур:

Здравствуйте. Подскажите пожалуйста, а как вот тут установить вместо рамномных записей например чтобы выводилось из категории под 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;
}

Икарус:

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

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