WordPress后台文章列表自定义列排序功能失效如何解决
问题根因
你仅完成了自定义列注册、列内容输出、可排序标记三个步骤,缺少排序触发后的查询修改逻辑,WordPress默认不知道该按哪个字段执行排序,因此只有前端交互反馈,实际排序不会生效。
修复方案
保留你现有代码不变,新增如下代码到主题functions.php或者自定义功能插件中即可:
add_action( 'pre_get_posts', 'custom_views_column_sort' ); function custom_views_column_sort( $query ) { // 仅对后台文章列表的主查询生效 if ( is_admin() && $query->is_main_query() ) { $orderby = $query->get( 'orderby' ); if ( 'Views' === $orderby ) { $query->set( 'meta_key', 'penci_post_views_count' ); // 浏览量为数值类型,用meta_value_num可避免字符串排序的异常 $query->set( 'orderby', 'meta_value_num' ); } } }
可选调整说明
- 若你的浏览量存储为字符串格式,可将代码中的
meta_value_num替换为meta_value - 若需要默认进入文章列表就按浏览量排序,可在上述函数中额外补充默认排序规则的判断逻辑
内容的提问来源于stack exchange,提问作者sangkavr
相关产品推荐
相关产品推荐

