WordPress 修改管理后台默认文章显示的数量
WordPress后台文章默认的显示数量是20条,如果你的WordPress的版本过低可能是15条。
米扑博客,经常在后台对文章进行批量编辑时,例如修改标签、草稿、已发布文章等,明显这个数量就不够用,翻页又很麻烦,我们希望修改post.php来增加文章显示的数量。
解决方法和步骤如下:
1. 进入WordPress根目录,打开wp-admin/includes/post.php
vim wp-admin/includes/post.php
2. 修改参数 $posts_per_page = 20
$per_page = "edit_{$post_type}_per_page"; $posts_per_page = (int) get_user_option( $per_page ); if ( empty( $posts_per_page ) || $posts_per_page < 1 ) $posts_per_page = 20; // 此处修改为 50
将20改成你想显示的文章数量
注意: 具体文章数得根据你的主机情况量力而行,一般50至100条也就差不多了。
说明:
这么修改,后台管理文章每页是显示50篇,
但是“共 xxx 页” 是错误的,仍然按照用户设定的或默认的20计算,
如米扑博客的管理后台,设置 $posts_per_page = 50,共 153 个项目,应该显示 4 页才对,可却显示了 8 页,如下图
为了分析问题,定位了class
接着,搜索定位
grep "tablenav-paging-text" wp-admin/ -r | grep -vE ".svn|.css"
wp-admin/includes/class-wp-list-table.php
继续,打开
vim wp-admin/includes/class-wp-list-table.php
接着,再次搜索定位,打印参数
保存,再回到管理后台,刷新页面,查看具体参数的值:
恩,原因很明浪了,虽然我们修改了每页显示50篇,但实际显示页面的参数里,默认每页仍然是20篇
这说明,我们上面修改的50篇并没有生效
好了,再回头去看下代码
vim wp-admin/includes/post.php
$per_page = "edit_{$post_type}_per_page"; $posts_per_page = (int) get_user_option( $per_page ); if ( empty( $posts_per_page ) || $posts_per_page < 1 ) $posts_per_page = 50;
发现哪儿不对了么?
嗯,答对了,修改语句前面有一个 if 判断
if ( empty( $posts_per_page ) || $posts_per_page < 1 )
当 $posts_per_page 为空或小于1才生效,
好吧,似乎找到原因了,实际我们并没有找到很好的解决方案
米扑博客目前的解决方案,研究了一小会儿代码,决定直接修改内核函数,先让能用着
vim wp-admin/includes/class-wp-list-table.php
protected function set_pagination_args( $args ) { $args = wp_parse_args( $args, array( 'total_items' => 0, 'total_pages' => 0, 'per_page' => 0, ) ); if ( !$args['total_pages'] && $args['per_page'] > 0 ) // $args['total_pages'] = ceil( $args['total_items'] / $args['per_page'] ); $args['total_pages'] = ceil( $args['total_items'] / 50 );
把50篇,写入计算页码的地方,硬编码进来
$args['total_pages'] = ceil( $args['total_items'] / 50 );
保存,再回到管理后台,刷新页面,查看显示的效果
好了,153个项目,50篇每页,共4页,正常了
思考与总结
1) 遇到问题,多琢磨探索,寻求解决之道,哪怕是临时且粗俗暴力的,但能解决问题才是王道
2) 其实,米扑博客在升级WordPress前,如上面修改50篇,后台显示是正确的4页,升级后就显示错误的8页
3) 初步怀疑是WordPress 升级后,新引入的一个bug,感兴趣的同学可以深入研究下
4) 我正在创业,米扑科技,没有太多时间深究了,有研究出来的同学留言告诉我哈
老版本的WordPress修改方式如下:
1. 打开wp-admin/includes/post.php
vim wp-admin/includes/post.php
2. 找到下面这一句
wp("post_type=post&what_to_show=posts$post_status_q&posts_per_page=15&order=$order&orderby=$orderby");
把15改成你想输出的文章数即可。
WordPress博客示例请参见米扑博客:
参考推荐:
版权所有: 本文系米扑博客原创、转载、摘录,或修订后发表,最后更新于 2017-11-02 00:08:41
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!