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

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

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

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

inet.ws - Powerful VPS Hosting in the USA, Canada, UK and DE!

Как отображать популярные 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_querypost_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
inet.ws - Powerful VPS Hosting in the USA, Canada, UK and DE!
Алексей Шевченко
редактор wpcafe
Изучает сайтостроение с 2008 года. Практикующий вебмастер, специализирующий на создание сайтов на WordPress. Задать вопрос Алексею можно на https://profiles.wordpress.org/wpthemeus/

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

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;
}

Икарус:

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

Галина:

Спасибо автору, очень помог.

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