Сортировка по популярности.
Нужен плагин чтоб сортировал записи по популярности.
То есть чем чаще просматривают запись на сайте тем выше он ранжируется. Как найти такое?
2 Ответ(ы)
Следующий код нужно добавить в 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);
а как сделать чтоб было самое просматриваемое за неделю или сутки? сайт с новостями. нужно чтоб не со всех постов отбиралось, а по критериям.