Search tags in CPTs

时间:2015-01-29 作者:myol

我似乎不知道如何在wordpress搜索中包含标签。例如,如果我搜索“apple”,我希望在标题或内容中返回带有“apple”的帖子(默认wordpress功能)as well as 包含标签“apple”的帖子;当我添加\'tag\' => $keyword 行到WP\\u查询中,然后每次搜索都没有结果。

$keyword = get_search_query();
$args = array(
    \'post_type\' =>  array(\'case_studies\', \'news\', \'events\'),
    \'post_status\' => \'publish\',
    \'s\' => $keyword,
    \'tag\' => $keyword,
);
$query = new WP_Query($args);
如果我删除它,我会得到正常的结果(但没有标签中包含关键字的帖子)

3 个回复
SO网友:Jason Hoffmann

这只有在关键字与您正在搜索的标记完全匹配的情况下才起作用,不幸的是,默认情况下,WordPress search不会索引标记数据,因此也不会产生任何结果。如果您想索引标签并将其包含在搜索结果中,您可能需要使用插件。Relevanassi 也许可以,但如果你不介意花点钱,那么SearchWP 肯定会这样做,因为它索引了所有内容,包括标记和自定义字段,并允许您为每个内容分配权重。例如,您可以给标签赋予最高的权重,或者如果您只想搜索标签,只需给其他所有内容赋予0的权重。

SO网友:Privateer

您的问题很可能是您正在取消搜索结果。

$keyword = get_search_query();
上面,您正在获取提供的搜索变量

$args = array(
    \'post_type\' =>  array(\'case_studies\', \'news\', \'events\'),
    \'post_status\' => \'publish\',
    \'s\' => $keyword,
    \'tag\' => $keyword,
);
这里,您执行的查询需要ALL 以下各项为真

帖子类型必须是案例研究、新闻或事件,帖子状态必须是发布(publish),标题(或可能的内容)必须包含搜索的关键字,帖子必须包含与搜索词完全相同的标记stag 申报,你可能会过得更好。

要显示结果,输入到WP\\U查询参数列表中的每个项目都必须为true。(子查询(如tax和term查询)具有特殊语法,可以对其数据进行查询或键入查询)

如果只想搜索具有特定标记的帖子,请尝试以下操作。

$keyword = strtolower( str_replace( array(\' \',\'_\'), \'-\', get_search_query() ) );
$args = array(
    \'post_type\' =>  array(\'case_studies\', \'news\', \'events\'),
    \'post_status\' => \'publish\',
    \'tag\' => $keyword,
);
如果标记slug与整个搜索完全匹配,那么这将为您提供匹配。

str\\u to\\u lower用作标记搜索标记段塞,而不是名称和标记段塞都是带破折号的小写(str\\u replace的原因是用破折号替换所有空格和下划线)

你想做什么?如果你能在你的问题中清楚地说明这一点,也许我们中的一个人可以为你提供问题的解决方案。

SO网友:Pieter Goosen

这是一个非常不寻常的情况,也是一个可能会失败的情况,给你带来意想不到的结果。

默认情况下,这完全不可能。我真的想得太多了,我想不出一个简单使用一个查询就能解决问题的解决方案,除非使用custom SQL query 或者filters supplied in WP_Query. 不幸的是,我的SQL仍然很糟糕,所以我无法在这里帮助您。您需要查看给定的两个链接。

在实际使用之前,您可能需要进行一些检查,以检查标记是否存在。这里你可以利用term_exists 测试标记是否存在。

我还考虑将搜索页面分为两部分,第一部分显示默认搜索(主查询)中的帖子。第二部分是一个自定义查询,它将从特定标记中检索帖子。在这里,您只需使用tag参数并使用搜索词作为值。如前所述,首先检查标记是否确实存在可能是一个好主意。

这里的缺点可能是重复的帖子,所以你可能也需要检查一下。

你可以在这里玩很多东西,这只是我给你的基本想法。如果您能够解决此问题,请随时发布解决方案并接受:-)

结束

相关推荐

Creating a custom search form

我正在创建一个自定义搜索表单,它将搜索一个名为recipes的自定义帖子类型。它有大量的分类法。现在,我将这些分类法的术语输出到按分类法名称分组的复选框中。问题在于输入:<!-- language: lang-html --> <label><input type=\"checkbox\" name=\"epx_recipes_season[]\" value=\"autumn\">Autumn</label> <la