在原始查询返回CEO POST后,如何控制回退查询?

时间:2014-06-20 作者:sergio

我刚刚明白了为什么WP开发人员希望您创建一个单独的404。php页面来控制该页面的输出。(以及对任何其他尝试保持沉默)

基本上是因为他们没有提供好的后备(或者我还没有找到?)控制第二个查询:如果初始查询没有返回任何内容,则运行回退查询。

通过指示我们创建另一个没有循环的文档,您永远不会注意到循环仍在返回所有博客帖子。这是唯一的原因(或更糟的原因),因为创建一个全新的模板要比在\\u帖子中使用一个(显然更简单的)过滤器更容易看到,如果找不到任何内容,就可以显示特定的文本和标题。不需要新模板。

是的,我可以修改主查询,但这没有任何意义,因为一旦在初始循环中找不到任何内容,所有帖子都将被检索。

是的,我可以在循环之前修改数据,但通过传统方式检索的任何帖子都会将404还原为301(带有重定向)

是否有人知道如何防止/更改回退查询?

我特别需要循环返回null或1页,而不是很多。(更改posts\\u per\\u页面是无用的,因为它只会影响初始循环,而不会影响WP在第一个循环没有返回任何内容时运行的循环)

谢谢

1 个回复
SO网友:Rarst

要解决这个问题有点困难,但我会试着逐一阐述你的观点。

创建一个单独的404。php页面来控制该页面的输出。(以及对任何其他尝试保持沉默)

404.php 模板控制404页的显示。这与WP模板层次结构的其余部分高度一致。它也不是强制性的,没有它,模板逻辑将继续使用index.php 它的模板。

基本上是因为他们没有提供好的后备(或者我还没有找到?)控制第二个查询:如果初始查询没有返回任何内容,则运行回退查询。

没有回退,因为有逻辑分支让它继续。Main query接收查询变量的输入,要么生成一组帖子,要么不生成。根据具体的上下文,后者可能是404,也可能不是404(单个帖子是404,存档不是404,我总是觉得奇怪)。

通过指示我们创建另一个没有循环的文档,您永远不会注意到循环仍在返回所有博客帖子。

事实并非如此。我很难想象主查询同时生成404和成功查询帖子(更不用说“全部”了)的情况。这听起来像是一个被窃听的主题/插件的作品。

是的,我可以修改主查询,但这没有任何意义,因为一旦在初始循环中找不到任何内容,所有帖子都将被检索。

如上所述,他们不会。或者至少他们不应该这样。

是否有人知道如何防止/更改回退查询?

第一步是找出它的来源,因为它不是来自WordPress核心

结束

相关推荐

PRE_GET_POSTS订单描述未注册

我创建了一个筛选函数来筛选帖子类型items 根据它的元价值_item_price. 问题是它只按升序工作,我不知道为什么。我的pre_get_posts 函数如下所示:function frontend_items_filter( $query ) { global $page_items_id if(!is_page($page_items_id)) return; if($query->query_va