问题描述

我在一个具有搜索功能的网站上工作,允许用户搜索很多帖子元。有一个特定的搜索模式,我想强制返回没有结果。 WP_Query 技术上会在数据库中找到结果,但是我想以某种方式重写,强制它不返回任何结果来触发 if( $example->have_posts() )失败。

有没有一些可以传递给 WP_Query 的参数,如'force_no_results' => true,将强制它返回没有结果?

最佳解决方案

尝试

'post__in' => array(0)

简单到点。

次佳解决方案

奇怪的是没有干净/明确的方式来短路 WP_Query

如果是主要查询,您可能会在 WP->parse_request()周围工作,似乎有相对较近的 (3.5)do_parse_request 过滤器。

但是对于 WP_Query 本身肮脏的黑客通常是有序的,如 short-circuiting SQL 查询通过 AND 1=0 通过 posts_where 过滤器等。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。