Edit: 您的实际问题似乎是搜索标记和类别,因此将s
中的参数tax_query
.
无法仅使用提供的字段搜索标签类别和其他术语WP_Query
. 您的查询不起作用,因为只有可用的参数无法满足您的需要。
与其问如何修复您的解决方案/尝试,不如问一个关于如何搜索分类术语/类别/标记的新问题
原始答案:
搜索不起作用的原因是您的查询没有搜索:
$query = new WP_Query([
\'post_type\' => \'post\',
\'tax_query\' => array(
\'relation\' => \'OR\',
array(
\'s\'=> $getSearch // for title and content
),
...
出于某种原因
s
参数已插入
tax_query
, 这没什么意义。
例如,以下是一个普通查询,用于搜索:
$query = new WP_Query([
\'s\' => \'search terms\',
etc..
但出于某种原因,你把它放在
tax_query
:
$query = new WP_Query([
\'tax_query\' => array(
\'relation\' => \'OR\',
array(
\'s\'=> $getSearch // for title and content
),
这是行不通的,也不是文档和示例所建议的。
此外,代码不必要地创建了一个全新的查询,这也没有意义,因为它会将页面加载时间增加一倍,并破坏分页。
相反,通过使用pre_get_posts
过滤器,例如infunctions.php
:
add_action( \'pre_get_posts\', function( \\WP_Query $q ) {
if ( !$q->is_main_query() || !$q->is_search() ) {
return;
}
$q->set( \'tax_query\', ....... );
} );
现在您可以使用
search.php
正如预期的那样,使用标准的post循环,一切都将正常工作。不需要在文件顶部进行查询。
TLDR:如果您想更改WP显示的帖子,请通过pre_get_posts
. 不要创建第二个查询,它会削弱性能并引入许多新问题