Вы ищете способ отслеживать просмотры постов без плагина с помощью post meta? Хотя для этого, вероятно, существует плагин, мы создали быстрый сниппет, который вы можете использовать для отслеживания просмотров постов без плагина с помощью post meta в WordPress.
Добавьте этот код в файл functions.php вашей темы или в свой файл нового плагина:
function getPostViews($postID){
$count_key = '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';
}
function setPostViews($postID) {
$count_key = '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);
}
}
// Устранение проблем с предварительной выборкой, добавляющей дополнительные просмотры
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);
По желанию добавьте код ниже, чтобы в админке WordPress появилась колонка в которой отображаются просмотры постов/статей:
// добавление колонки в WP-Admin
add_filter('manage_posts_columns', 'posts_column_views');
add_action('manage_posts_custom_column', 'posts_custom_column_views',5,2);
function posts_column_views($defaults){
$defaults['post_views'] = __('Views');
return $defaults;
}
function posts_custom_column_views($column_name, $id){
if($column_name === 'post_views'){
echo getPostViews(get_the_ID());
}
}
Эта часть кода отслеживания просмотров будет устанавливать просмотры постов. Просто поместите этот код ниже в файл single.php внутри цикла WordPress.
<?php
setPostViews(get_the_ID());
?>
Вопрос кеширования
Если вы используете плагин кэширования, например W3 Total Cache, то описанный выше метод установки просмотров не будет работать, поскольку функция setPostViews()
никогда не будет выполняться.
Однако в W3 Total Cache есть функция, называемая «кэшированием фрагментов». Вместо описанного выше способа используйте следующее и тогда функция setPostViews()
будет работать нормально и отслеживать все просмотры ваших постов, даже если включено кэширование.
<!-- mfunc setPostViews(get_the_ID()); --><!-- /mfunc -->
Приведенный ниже код не является обязательным. Используйте этот код, если вы хотите отображать количество просмотров в ваших постах. Поместите этот код в цикл.
<?php
echo getPostViews(get_the_ID());
?>
На этом всё. Если у вас есть вопросы — пишите в комментариях ниже.