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博客示例请参见米扑博客:

https://blog.mimvp.com

 

 

参考推荐

WordPress 文章禁止自动转义字符

WordPress 定时发布文章失败的解决

WordPress 搜索结果中排除特定的页面、文章和分类