问题描述

我已经注册了一个名为”node” 的自定义帖子类型。

当我创建一个基本的 WP_Query 来获取该类型的帖子时,它的工作正常。例:

$args = array(
'post_status' => 'publish',
'post_type' => 'node');

$query = new WP_Query($args);

这将获得”node” 类型的所有发表的帖子。

但是,一旦我将它与搜索结合起来,就不会返回任何东西。例:

$args = array(
'post_status' => 'publish',
'post_type' => 'node',
's' => 'My search term');

$query = new WP_Query($args);

这将不会得到任何东西,虽然它应该得到几个类型’node’ 包含 「我的搜索字词」 的帖子。

据我所知,只要在 $ args 中包含”s” 参数,就会自动将帖子类型设置为”post” 和”page” 。如果我打印出一个 $查询的 var_dump,它显示如下:

没有”s”:

object(WP_Query)
  public 'query' =>
    array (size=2)
      'post_status' => string 'publish' (length=7)
      'post_type' => string 'node' (length=4)
  public 'query_vars' =>
    array (size=63)
      'post_status' => string 'publish' (length=7)
      'post_type' => string 'node' (length=4)
...

用”s”:

object(WP_Query)
  public 'query' =>
    array (size=2)
      'post_status' => string 'publish' (length=7)
      's' => string 'My search term' (length=14)
      'post_type' => string 'node' (length=4)
  public 'query_vars' =>
    array (size=66)
      'post_status' => string 'publish' (length=7)
      's' => string 'My search term' (length=14)
      'post_type' =>
        array (size=2)
          0 => string 'post' (length=4)
          1 => string 'page' (length=4)
...

所以 WordPress 似乎在涉及到搜索时就会覆盖帖子类型。

我该如何解决?

最佳解决办法

你是对的,我在一个干净的 WordPress 安装尝试,它的工作原理。

似乎像我在环境中使用的插件之一是挂在自己的一个 pre-query 事件中。

谢谢!

参考文献

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