有人可以解释一下看似奇怪的wordpress行为吗?
我在blog pages show at most
下将settings->reading
设置为10-这是默认设置。
我有一个用于exhibitors
的自定义帖子类型,并且已经创建了7种。
在参展商archive-exhibitors.blade.php
的存档页面上,我一次只想显示2,因此我使用以下代码:
@php
global $wp_query;
$posts_per_page = 2 ;
$paged = get_query_var('paged');
if(!$paged){
$paged = 1;
}
$args = [
'post_type' => 'exhibitors',
'posts_per_page' => $posts_per_page,
'paged' => $paged,
];
$wp_query = new WP_Query($args);
@endphp
@while (have_posts()) @php the_post() @endphp
@include('partials.content-'.get_post_type())
@endwhile
现在,当我转到/exhibitors/
时,我看到的是您所期望的前两个展览,但是当我转到/exhibitors/page/2/
时,实际上是在获取404页面。
如果我将blog posts to show at most
重设为5,则可以转到/exhibitors/page/2/
,我看到了您期望的第三和第四条帖子,但是现在第3页不起作用。如果将blog posts to show at most
设置为1,我只能使它正常工作。
我真的不明白为什么会这样,就像发生了一些预查询一样,它正在查看全局设置,然后重定向到404,在这种情况下是不正确的。
感谢所有接受帮助的人
答案 0 :(得分:0)
我找到了解决方法,而不是解决方案!我只是在这里发布,这样可能会对其他人有所帮助。我的functions.php
我刚刚添加了这个:
function custom_posts_per_page( $query ) {
if ( $query->is_archive('exhibitors') ) {
if(!is_admin()){
set_query_var('posts_per_page', 1);
}
}
}
add_action( 'pre_get_posts', 'custom_posts_per_page' );
这似乎会覆盖默认的blog posts to show
设置,您可以基于每个post_type进行设置。注意,我正在检查它不是管理员页面,因为这只是前端。
任何人都知道更好的解决方案吗?