谁能解释一下这种看似奇怪的wordpress行为吗?
在设置->阅读下, 我的博客页面最多显示为10, 这是默认设置。
我有一个针对参展商的自定义帖子类型, 我已经创建了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页面。
如果我将博客文章重置为最多显示为5, 则可以转到/ exhibitors / page / 2 /, 然后按照你的期望看到第3和第4篇文章, 但是现在第3页不起作用。如果我将博客文章最多设置为显示为1, 则只能使其正常工作。
我真的不明白为什么会发生这种情况, 就像发生了一些预查询一样, 它正在查看全局设置, 并重定向到404, 在这种情况下, 这是不正确的。
非常感谢任何帮助
#1
我找到了解决方法, 而不是解决方案!我只是在这里发布, 这样可能会对其他人有所帮助。我我的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' );
这似乎会覆盖默认的博客文章以显示设置, 你可以基于每个post_type进行设置。请注意, 我正在检查它不是管理员页面, 因为这只是前端。
有谁知道更好的解决方案?
评论前必须登录!
注册