除了使用 Google Analytics 统计整个博客流量之外,我们还可以对每篇文章的点击数进行统计,通过每篇文章统计,就可以知道哪些文章更受读者欢迎……比如 WP-PostViews 插件,不过这个插件不能在后台文章列表页面显示点击数,可以使用 WordPress 的 Hook 实现。
WordPress 技巧:在后台显示文章浏览数「不可排序」
水煮鱼原版代码:
add_filter('manage_posts_columns', function($columns){
$columns['views'] = __('Views');
return $columns;
});
add_action('manage_posts_custom_column',function($column_name,$id){
if ($column_name != 'views'){
return;
}
echo get_post_meta($id, "views",true);
},10,2);
将上面代码复制到 WP-PostViews 插件原文件或者主题 functions.php 中即可在 WordPress 后台文章列表页面查看每篇文章点击数。
不过这个不能根据点击数「Views」排序显示文章。
WordPress 技巧:在后台显示文章浏览数「可排序」
上面水煮鱼代码,结合这个「给wordpress后台文章列表增加自定义排序栏」(文章备份)即可实现在后台显示文章浏览数,并可根据浏览数排序。
参考代码如下(有更新,注意红色字体部分代码):
add_filter('manage_posts_columns', function($columns){
$columns['views'] = __('Views');
return $columns;
});
add_action('manage_posts_custom_column',function($column_name,$id){
if ($column_name != 'views'){
return;
}
if ( get_post_meta($id, "views",true) == '' ){ //增加没有 views 字段处理,否则 PHP 8 环境会报错
echo '0';
} else {
echo get_post_meta($id, "views",true);
}
},10,2);
add_filter( 'manage_edit-post_sortable_columns', function ( $columns ) {
$columns['views'] = 'views';
return $columns;
});
add_action( 'load-edit.php', function() {
add_filter( 'request', 'theme_admin_sort_views' );
});
function theme_admin_sort_views( $vars ) {
if ( isset( $vars['orderby'] ) && 'views' == $vars['orderby'] ) {
$vars = array_merge(
$vars,
array(
'meta_key' => 'views',
'orderby' => 'meta_value_num'
)
);
}
return $vars;
}
将上面代码复制到主题 functions.php 中即可在 WordPress 后台文章列表页面查看每篇文章点击数,并可点击进行升序/降序排序。(可能需要根据实际环境修改)
好东西。。。。。。。。。不过有小错误,get_post_meta($id, “views”,true); 前多了个echo。
@Yan 多了吗?亲测在用代码就有 echo 啊~
@老杨 多了。亲测echo重复输出了。我是wordpress 5.5.3。
@Yan 同样 5.5.3 啊,get_post_meta 并不会打印出来啊,奇怪~
https://developer.wordpress.org/reference/functions/get_post_meta/
不知道,哈哈哈。先这样吧。
看淡了 懒得弄了😂
@灰常记忆 删裤跑路…
@老杨 你这实时在线? 跑路不可能
@灰常记忆 哪这么牛13,刚好刷到而已~
有了这个,就知道以后写什么方向的东西了。
@老张博客 额,只是方便在后台看~
你隐藏前台之后,确实有这个需求。囧 。。
@郑永 前台没有隐藏啊,不过是加了点处理,加上后台也更方便。
我是用了 WP-PostViews 插件,后台可以按浏览次数排序的。
@maqingxi 嗯,插件带这个功能,我没有用插件。