Сортировка по популярности.

Следующий код нужно добавить в functions.php

 /**
 * Обновляем счетчик посещений
 *
 * @param type $postID
 */
 function onwp_set_post_views($postID) {
 $count_key = 'onwp_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);
 }
 }
/**
 * Вызываем счетчик посещений
 *
 * @global type $post
 * @param type $post_id
 * @return type
 */
 function onwp_track_post_views($post_id) {
 if (!is_single())
 return;
 if (empty($post_id)) {
 global $post;
 $post_id = $post->ID;
 }
 onwp_set_post_views($post_id);
 }
add_action('wp_head', 'onwp_track_post_views');
/**
 * Применяем сортировку только на главной странице
 *
 * @param type $query
 */
 function onwp_exclude_category($query) {
 if ($query->is_front_page() && $query->is_main_query()) {
 $query->set('meta_key', 'onwp_post_views_count');
 $query->set('orderby', 'meta_value');
 $query->set('order', 'DESC'); // порядок сортировки
 }
 }
add_action('pre_get_posts', 'onwp_exclude_category');
 

В данном коде при просмотре странице мы ведем подсчет этих просмотров(при каждом открытии страницы увеличиваем на +1). Затем для главной страницы добавляем сортировку по этим просмотрам.

Для вывода количества просмотров воспользуйтесь функцией:

 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 просмотров";
 }
 return $count.' просмотров';
 }
 

Сам вывод, нужно использовать в коде страницы:

 echo wpb_get_post_views($postI->D);
 
Добавить Комментарий

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

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

Ваш ответ

Размещая свой ответ, вы соглашаетесь с правилами сайта.