WordPress 技巧:纯代码在后台显示文章浏览数「可排序」

除了使用 Google Analytics 统计整个博客流量之外,我们还可以对每篇文章的点击数进行统计,通过每篇文章统计,就可以知道哪些文章更受读者欢迎……比如 WP-PostViews 插件(后记:这个插件支持后台显示文章浏览数并可排序)。

温馨提示:以下所有代码与 WP-PostViews 插件冲突,不要同时使用!!!

更新:纯代码在后台显示文章浏览数「可排序」

2021-02-17 更新,提取自 WP-PostViews 插件,代码更简洁。

需要 the_views() 函数支持,使用 post_meta 保存文章浏览数(meta_key 名称为 views)。

//后台文章列表添加 浏览数
add_action('manage_posts_custom_column', 'add_postviews_column_content');
add_filter('manage_posts_columns', 'add_postviews_column');
add_action('manage_pages_custom_column', 'add_postviews_column_content');
add_filter('manage_pages_columns', 'add_postviews_column');
function add_postviews_column($defaults) {
$defaults['views'] = __( 'Views' );
return $defaults;
}
function add_postviews_column_content($column_name) {
if ($column_name === 'views' ) {
if ( function_exists('the_views' ) ) {
the_views( true, '', '', true );
}
}
}
add_filter( 'manage_edit-post_sortable_columns', 'sort_postviews_column');
add_filter( 'manage_edit-page_sortable_columns', 'sort_postviews_column' );
function sort_postviews_column( $defaults ) {
$defaults['views'] = 'views';
return $defaults;
}
add_action('pre_get_posts', 'sort_postviews');
function sort_postviews($query) {
if ( ! is_admin() ) {
return;
}
$orderby = $query->get('orderby');
if ( 'views' === $orderby ) {
$query->set( 'meta_key', 'views' );
$query->set( 'orderby', 'meta_value_num' );
}
}
//后台文章列表添加 浏览数 - END

温馨提示:以下为旧版代码,使用上面代码即可实现所有功能。

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 后台文章列表页面查看每篇文章点击数,并可点击进行升序/降序排序。(可能需要根据实际环境修改)

参考资料

WP-PostViews 插件

WordPress 技巧:在后台显示文章浏览数

给wordpress后台文章列表增加自定义排序栏

除非注明,垃圾站文章均为网络收集,本文地址 https://cyhour.com/1554/,转载时烦请以链接形式注明原始出处。
声明:我们不销售主机,任何VPS主机均有跑路风险且需定期备份,防止数据丢失。信息以实际为准,评测仅供参考不代表权威!
🍄:Netflix 奈飞 YouTube 合租

升级新版 Google AdSense 代码提升广告效果

2021年7月19日,Google AdSense 最近发布了新版 AdSense 代码。通过新版 AdSense 代码,AdSense 可以更早触发优化功能,从而提升网站上广告效果。新广告代码适用于自动广告和广告单元。 如何获取 Google AdSense 新版代码? 无需采取任何措施。在下次登录 AdSense 后,您将拥有对新广告代码的访…

利用 Google Analytics 追踪 WordPress 站内搜索关键词

Google分析(Google Analytics)是一个由 Google 所提供的网站流量统计服务。Google 分析(Analytics)现在是互联网上使用最广泛的网络分析服务。 利用 Google Analytics 追踪 WordPress 站内搜索关键词 优化内容 如果网站/博客在 Google Analytics 流量统计,利用 Google Analytics 追踪 W…

Google Analytics 异步请求(服务端请求)

感谢伟大的祖国,使得好好的 Google,必须折腾一番才能好好的用起来。Google 搜索如此,Google Analytics 肯定也不例外(网上据说 Google Analytics 没有被屏蔽)。 Google Analytics 支持服务端发送统计信息(via:Jerry Qu),而通过服务端统计可以解决 Google Analytics 连接缓慢问题,提高页面…
浏览: 114 标签:  ,  , 

Gravatar 头像被墙及解决方案 Gravatar 头像国内镜像地址大全

Gravatar 头像真是一言难尽,时而正常时而抽风时而无法访问……就一个 Gravatar 头像,这有啥好强(现代通假字)的呢?(据说是被其它服务连累?) 解决办法 - 调用 ssl/cn 头像链接 历史解决办法:调用 ssl 头像链接——https还是没被墙的,而且速度还不错,直接调用这个最简单了。主题 functi…
浏览: 140 标签:  ,  ,  , 
浏览: 79 标签:  ,  ,  , 

Comments:19

  1. 好东西。。。。。。。。。不过有小错误,get_post_meta($id, “views”,true); 前多了个echo。

    2020.12.08 21:52 # 回复
    1楼
    • @Yan 多了吗?亲测在用代码就有 echo 啊~

      2020.12.08 22:19 # 回复
      • @老杨 多了。亲测echo重复输出了。我是wordpress 5.5.3。

        2020.12.08 22:27 # 回复
        • @Yan 同样 5.5.3 啊,get_post_meta 并不会打印出来啊,奇怪~
          https://developer.wordpress.org/reference/functions/get_post_meta/

          2020.12.08 22:51 # 回复
  2. 不知道,哈哈哈。先这样吧。

    2020.12.08 22:54 # 回复
    2楼
  3. 看淡了 懒得弄了😂

    2020.12.09 07:20 # 回复
    3楼
  4. 有了这个,就知道以后写什么方向的东西了。

    2020.12.09 10:35 # 回复
    4楼
  5. 你隐藏前台之后,确实有这个需求。囧 。。

    2020.12.20 20:11 # 回复
    5楼
    • @郑永 前台没有隐藏啊,不过是加了点处理,加上后台也更方便。

      2020.12.20 21:36 # 回复
  6. 我是用了 WP-PostViews 插件,后台可以按浏览次数排序的。

    2021.01.06 16:16 # 回复
    6楼
  7. 我发现这样一个问题,在没有这功能的主题上用着特别好,能够排序,后台出现views,但我有一个站点的主题,自带阅读数量的,只是不能排序,放上这代码后,数量统计不准确,排序也很混乱。

    2021.01.20 14:59 # 回复
    7楼

发表留言

Vultr 送$100,搬瓦工年付最低$49,优惠码 BWH3HYATVBJW,更多推荐VPS信息