Отображение самых просматриваемых постов за последние 7 дней с количеством просмотров через WordPress RSS канал - PullRequest
0 голосов
/ 13 февраля 2019

Мне нужны два канала для моего WP-сайта.Один должен быть обычным wp post feed <другой - должен показывать наиболее просматриваемые посты за последние семь дней с количеством просмотров.Я также хочу показать просмотры постов из счетчика плагинов WP-PostViews.</p>

Я попробовал это, добавив функцию WP-PostViews в feed-rss2.Это работает, но я не могу ограничить вывод 7 семью днями

get_most_viewed('post', 10);

1 Ответ

0 голосов
/ 13 февраля 2019

Первое, что нам нужно сделать, - это создать функцию, которая будет определять количество просмотров постов и сохранять их в качестве настраиваемого поля для каждого поста.Чтобы сделать это, вставьте следующие коды в файл 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);

Теперь, когда у вас есть эта функция на месте, нам нужно вызывать эту функцию на отдельных страницах сообщения.Таким образом, функция точно знает, какая запись получает кредит за просмотры.Чтобы сделать это, вам нужно вставить следующий код в ваш отдельный пост-цикл:

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');

вы хотите отобразить счетчик просмотров поста на ваших отдельных постах

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

Then inside your post loop add the following code:

wpb_get_post_views(get_the_ID());

Если вы хотите отсортировать записи по количеству просмотров, вы можете сделать это легко, используя параметр wp_query post_meta.Самый простой пример запроса цикла будет выглядеть так:

<?php 
$popularpost = new WP_Query( array( 'posts_per_page' => 4, 'meta_key' => 'wpb_post_views_count', 'orderby' => 'meta_value_num', 'order' => 'DESC'  ) );
while ( $popularpost->have_posts() ) : $popularpost->the_post();

the_title();

endwhile;
?>

Справочный веб-сайт: https://www.wpbeginner.com/wp-tutorials/how-to-track-popular-posts-by-views-in-wordpress-without-a-plugin/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...