世外桃源

WordPress 纯代码实现后台显示文章浏览数 并可按浏览数排序

除了可以使用 Google Analytics 统计 WordPress 博客流量,我们还可以使用 WP-PostViews 这类插件对每篇文章点击数进行统计,那么在 WordPress 后台可以根据每篇文章浏览数进行排序找出哪些文章更受读者欢迎吗?

「WordPress 纯代码实现后台显示文章浏览数 并可按浏览数排序:https://sars.win/34」

WordPress 纯代码实现后台显示文章浏览数 并可按浏览数排序 - 第1张图片

答案是肯定可以,最简单的方法就是使用 WP-PostViews 插件,已经内置此项功能。若不想使用 WP-PostViews 插件,并且已经使用 WP-PostViews 代码版统计文章、页面浏览数,可以使用下面 WordPress 后台显示文章浏览数「可排序」纯代码版。

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

「WordPress 纯代码实现后台显示文章浏览数 并可按浏览数排序:https://sars.win/34」

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

新版本代码提取自 WP-PostViews 插件,代码更简洁。需要 the_views() 函数支持,使用 post_meta 保存文章浏览数(meta_key 名称为 views)。

//后台文章列表添加 浏览数
//ADs:uxtt.com | ostarted.com | 0xo.net | ae.mba | sars.win | bdkp.net
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

代码复制粘贴到当前使用主题 functions.php 文件即可,参考效果图:

WordPress 纯代码实现后台显示文章浏览数 并可按浏览数排序 - 第2张图片

「WordPress 纯代码实现后台显示文章浏览数 并可按浏览数排序:https://sars.win/34」

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

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 纯代码实现后台显示文章浏览数 并可按浏览数排序:https://sars.win/34」

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 技巧:在后台显示文章浏览数

退出移动版