Подойдёт как заготовка или для приблизительной оценки популярности страниц. Не фильтрует ботов, админа и т.д.
function steben_views_counter() {
if ( is_category() || is_tag() ) {
$views = intval( get_term_meta( get_queried_object_id(), 'views_counter', true ));
update_term_meta( get_queried_object_id(), 'views_counter', $views + 1 );
}
if ( is_singular() ) {
$views = intval( get_post_meta( get_queried_object_id(), 'views_counter', true ));
update_post_meta( get_queried_object_id(), 'views_counter', $views + 1 );
}
}
add_action( 'template_redirect', 'steben_views_counter' );
Пример сортировки постов по просмотрам:
$posts = get_posts([
'numberposts' => 10,
'orderby' => 'meta_value_num',
'order' => 'DESC',
'meta_key' => 'views_counter',
'post_type' => 'post',
]);