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