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/AMP 加速版本」,转载请以链接形式注明出处。
声明:我们不销售主机,任何VPS主机均有跑路风险且需定期备份,防止数据丢失。信息以实际为准,评测仅供参考不代表权威!
🍄:Netflix 奈飞 YouTube 合租

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

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

Redmi Note 9 4G 刷机欧洲EU版净化去广告

虽然口水苹果十三香,但是眼下囊中确实只有红米……到手不用 1000 大洋,试试也无妨,实在不行再找银行/东哥要十三香。 入手 Redmi Note 9 4G 缘由:领导的微信机 iPhone SE 一代确实很老了(再过两个月就开始第六个年头了),没有换过电池,进过水修过一次,现在经常尿崩突然就关机了得插上…

使用 GoAccess 分析 Nginx 日志

最近发现博客加载图片大多时候都是龟速,想过换服务器,换回主机(比如传说中的外贸主机 SiteGround),图片上 CDN……想了一圈,最终什么都没动,一是穷二是懒三是图片多茄大的水文并不多,先这样吧,实在不行再折腾。倒是忍不住折腾了一下 GoAccess 分析 Nginx 日志,分析了一圈,没什么用。 记录…
浏览: 122 标签:  ,  ,  , 

WordPress 纯代码实现彩色标签云及简单优化配置

WordPress 自带标签云小工具,侧栏直接添加即可,就是默认样式有点平淡,可以加点代码实现彩色标签云及简单优化一下。 WordPress 纯代码实现彩色标签云 代码丢到 WordPress 主题 functions.php 文件即可: //彩色标签云 tag cloudfunction theme_color_cloud_hook($text) { $text = preg_rep…
浏览: 112 标签:  ,  ,  ,  , 
浏览: 32 标签:  ,  ,  , 

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信息