免责声明:我正在使用传统的公司WP网站(PHP 5.3.3),而且我无法做出很多重大改变。
我正在为现有资源页面(/ resources)添加分页。我一般都对Wordpress很新,但我的页面工作正常并在页面加载时显示正确数量的资源。
我的问题是:当您使用以下命令在Wordpress中进行分页时
<?php next_posts_link( 'More Resources' , $the_query->max_num_pages ); ?>
它在页面上创建一个链接,当你点击它时,WP会自动添加页面参数,如下所示: / resources / page / 2 / 。我遇到的问题是,我点击它后会得到404。我已经对此做了很多阅读,主要原因通常是当您使用wp_query进行自定义查询时,自定义查询中的帖子数量与主页面查询中的帖子数量不同。我认为这是最初的问题,所以我移动逻辑将posts_per_page参数设置为 pre_post_load 挂钩,这样运行正常:
function exp_wp_modify_main_query ( $query ) {
if ( $query->is_page( 'resources' ) && $query->is_main_query() ) { // Run only on resources page
$query->query_vars['posts_per_page'] = 8;
}
}
add_action( 'pre_get_posts', 'exp_wp_modify_main_query' );
我确实有足够的博客文章要求分页(帖子数量多于我每页的帖子数量)。我认为这个问题与这个页面没有类别的情况有关。资源页面没有类别。所以不是看起来像这样的网址: resources / some_category / page / 2 / ,它只是资源/ page / 2。 WP是否有可能认为&#34;页面&#34;是什么类别,这就是为什么它会抛出404?
如果是,有没有办法将 / pages / 2 / 更改为 / p / 2 / ,如果是,那就是一个好主意?
答案 0 :(得分:1)
我想出来了。要改变分页基础:
我在我的插件中创建了这个功能:
function set_pagination_base () {
global $wp_rewrite;
$wp_rewrite->pagination_base = 'p';
}
然后:
add_action( 'init', 'set_pagination_base' );