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

    Следующий код нужно добавить в 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);
     
    Добавить Комментарий

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

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

    Ваш ответ

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