Ранее мы уже рассматривали как добавить блок «Похожие записи» на 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_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.
Надеемся, эти советы вам помогут.
Комментарии к записи: 14
автор, а где будет появлятся это творение?????????? сайдбар футер хедер, ты же не указал
Это на ваше усмотрение, смотря куда вы вставите код. Можно в конце каждой записи, можно в начале каждой записи, можно в сайдбаре.
вот я и не нашел тот самый код
как влияет на нагрузку WP данный способ ?*
Точно так же, как и любой другой плагин) Практически никак.
Афтар написал хуйни нам тут
интересная статья!!!
Подскажите плиз, куда вставлять код чтобы популярные записи были в конце каждой статьи????
Заранее благодарен!
В single.php после
Большое спасибо, буду пробовать!!!!
Куда вставлять это кусок кода ? Где то прочитал что в wp-content.php. но этот метод не работает, просто перестает загружаться сайт ! Что делать ?
В уроке написано, в файл 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;
}
КГ/АМ.
Аффтар, написал бы хоть как это говно вывести потом.
Спасибо автору, очень помог.