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/,转载时必须以链接形式注明原始出处。
声明:我们不销售主机,选主机需合法使用。任何主机需定期备份,防止数据丢失。信息以实际为准,评测仅供参考不代表权威!
🔞:Netflix 奈飞 YouTube 合租免费节点Telegram 频道

使用 rclone 将 Google Drive 文件同步至 OneDrive

前几天上了博友「灵尘居」的 Office 365 车,1T OneDrive 到手,手机照片一直喂 Google AI,挺方便的,以前还会同步一份到家里的垃圾西数 NAS,不过并不太自动,后来就懒得弄了。 Google 虽然是大厂,但是数据只有一份,还是怕怕,多一个备份不是坏事。苹果 iCloud 不错,但是贼贵,况且我只有一个…
浏览: 45 标签:  ,  ,  , 

尼康 D7100 中文使用说明书 高清 PDF 电子版免费下载

尼康 D7100 说明书是一份介绍详细尼康 D7100 单反官方教程,推荐购买了 D7100 单反博友下载保存参考,以便随时查看一些常用按键操作和使用技巧。 尼康 D7100 简介 尼康 D7100 搭载先进的对象捕捉性能和成像性能,能够忠实还原拍摄细节。高密度的 51 点自动对焦系统准确捕捉目标对象并进行跟踪,…

全网热门公共 BitTorrent Tracker 列表合集 加速BT下载

BT 下载速度取决于其他下载同一资源的用户上传速度。做种「指上传文件数据给其他 BT 用户的行为」用户越多,你的下载速度越快!如果资源没人提供上传,就会完全没有下载速度,而做种用户靠 Peer、DHT、Tracker 获得。 Tracker 是什么? BT 下载的文件都是其他用户上传给你的。 BT 下载速度…

换域名?改固定链接?

去年底注册了个短域名,虽然非主流,但是胜在够短,两字母,还没有溢价。一直寻思着把它转移到 Cloudflare,换到博客使用,无奈 Google Adsense 一直没能折腾审核通过。 WordPress 修改固定链接? 以前听说 postname 更有利于 SEO,曾经试过人工翻译。后来嫌麻烦,干脆只用 /%post_id%/,后面 .…
浏览: 113 标签:  ,  ,  , 
浏览: 167 标签:  ,  ,  , 

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