wordpress - 自定义存档和分页
问题描述
谁能解释一下这个看似奇怪的wordpress行为吗?
我已blog pages show at most
设置为 10 下settings->reading
- 这是默认值。
我有一个自定义帖子类型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/
我看到的前 2 个参展商如您所愿列出,但当我访问时,/exhibitors/page/2/
我实际上得到了 404 页面。
如果我重置blog posts to show at most
为 5,我可以转到/exhibitors/page/2/
并看到第三和第四个帖子,如你所料,但现在第 3 页不起作用。blog posts to show at most
如果我设置为 1,我只能让它正常工作。
我真的不明白为什么会发生这种情况,就像有一些预查询正在查看全局设置并重定向到 404,在这种情况下是不正确的。
感激地接受任何帮助
解决方案
我找到了解决方法,而不是解决方案!我只是在这里发布这个,所以它可以帮助其他人。我我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 的基础上进行。请注意,我正在检查它不是管理页面,因为这仅适用于前端。
有谁知道更好的解决方案??
推荐阅读
- c# - 在 C# .Net Framework 4.5 中定义 Excel 应用程序后弹出消息框“无法加载 TalkAPI 库”
- curl - 发布文件位置
- android - 尝试获取当前位置时出现 Surface 和 Nativecrypto 错误
- fullscreen - Hide address bar in Progressive Web Applications
- python - Numpy adding values to diagonals
- spring-mvc - 我在哪里可以找到 Spring MVC 应用程序中的 LDAP 服务器
- reactjs - 当子元素中的元素更新时反应 setState
- java - Spring Boot 找不到 /WEB-INF/classes/index.jsp
- mongodb - 无法连接到mongodb服务
- c# - 在 Unity 中检索序列化的 Playerprefs 特定值