个性化阅读
专注于IT技术分析

WP自定义归档和分页

谁能解释一下这种看似奇怪的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进行设置。请注意, 我正在检查它不是管理员页面, 因为这只是前端。

有谁知道更好的解决方案?

赞(0) 打赏
未经允许不得转载:srcmini » WP自定义归档和分页
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏