问题描述
我已经注册了一个名为”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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。