Сниппет автоматически отслеживает просмотры записей, страниц и произвольных типов записей. Можно использовать функцию get_post_views с дополнительным параметром $post_id для получения количества просмотров каждой записи, страницы и т.д. Также можно добавить колонку “Просмотры” в административную панель для каждого типа записей.
Использование
Вставляем функцию в нужный файл темы:
echo get_post_views(get_the_ID());
Сниппет
add_filter("wp_head", "wpds_increament_post_view");
function get_post_views($post_id=NULL){
global $post;
if($post_id==NULL)
$post_id = $post->ID;
if(!empty($post_id)){
$views_key = 'wpds_post_views';
$views = get_post_meta($post_id, $views_key, true);
if(empty($views) || !is_numeric($views)){
delete_post_meta($post_id, $views_key);
add_post_meta($post_id, $views_key, '0');
return "0 просмотров";
}
else if($views == 1)
return "1 просмотр";
return $views.' просмотров';
}
}
function wpds_increament_post_view() {
global $post;
if(is_singular()){
$views_key = 'wpds_post_views';
$views = get_post_meta($post->ID, $views_key, true);
if(empty($views) || !is_numeric($views)){
delete_post_meta($post->ID, $views_key);
add_post_meta($post->ID, $views_key, '1');
}else
update_post_meta($post->ID, $views_key, ++$views);
}
}
Добавляем колонку Просмотры в админку
Для добавления колонки Просмотры в раздел Все записи административной панели сайта используем следующий код:
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'] = __('Просмотры');
return $defaults;
}
function posts_custom_column_views($column_name, $id){
if($column_name === 'post_views')
echo get_post_views(get_the_ID());
}
Произвольные типы записей
Очень похоже на предыдущий, но для произвольных типов записей нужно просто добавить действие и фильтр для вашего типа. Например, вот так будет выглядеть код для типа записи “portfolio”:
add_filter('manage_portfolio_posts_columns', 'posts_column_views');
add_action('manage_portfolio_posts_custom_column', 'posts_custom_column_views',5,2);
Страницы
Страницы в WordPress не являются произвольным типом записей, поэтому требуют другого вызова:
add_filter('manage_pages_columns', 'posts_column_views');
add_action('manage_pages_custom_column', 'posts_custom_column_views',5,2);
По всем вопросам и отзывам просьба писать в комментарии ниже.
Не забывайте, по возможности, оценивать понравившиеся записи количеством звездочек на ваше усмотрение.
Источник: WPDevSnippets
