查询无效的取消操作

时间:2021-01-20 作者:Ronald Langeveld

在模板中,我的子主题中有一个自定义循环函数。php文件来循环特定的帖子类型(“列表”),然后将其放入数组中,以用于模板的一部分。

下面是一个代码示例

public function loop()
{

    global $wp_query;
    $featured = $regular = array();
    foreach ($wp_query->posts as $count => $post)
        if (has_term(\'featured\', \'listings_tag\', $post->ID))
            $featured[] = $post;
        else
            $regular[] = $post;
    $posts = array_merge($regular, $featured);
    $posts = array_reverse($posts);
    

    include(\'templates/loop.php\');

}
所以这很好,但是,它在每11篇文章之后分页。相反,我希望它显示所有内容。

我尝试在函数中添加自定义操作。php,使用“pre\\u get\\u posts”挂钩。然而,它对我的代码没有任何影响。

function show_all($query){
    if (is_post_type_archive(\'listings\') && $query->is_main_query()) {
        $query->set(\'nopaging\', True);
    }
}

add_action(\'pre_get_posts\', \'show_all\');
有什么建议吗?

1 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

nopaging 并没有获取所有帖子,它只是告诉WordPress不要费心去弄清楚有多少页之类的东西。

您真正想要的不是禁用分页,这只是您所问问题的解决方案。你应该询问你的问题,也就是如何一次显示所有帖子。

一次显示所有帖子可能很危险,因此,请设置一个非常高的限制,例如:

$query->set(\'posts_per_page\', 500 );
任何超过500篇的帖子都可能会引起问题,或者速度非常慢,而且非常冗长。这样做的目的是指定一个您从未期望达到的数字。这样你就知道最坏的情况是不会发生的。当你知道页面不会被破坏的事实时,为什么要相信不会有一个坏掉的插件或者一个客户端意外地做了什么?

相关推荐

Bootstrap grid while loop

我用bootstrap制作了一个网格,我想在其中显示5个不同的帖子,但出于某种原因,它复制了网格,并且每个网格显示一个帖子。第一幅图显示了它如何开始将网格复制5次,而不是仅在这些列中显示5篇文章。第二张图片显示了我想如何工作。 <?php get_header(); ?> <main> <div class=\"container\"> <div class=\"row\"> <?php &