使用Relavanssi进行自定义字段搜索

时间:2013-03-24 作者:Eckstein

我正在工作的网站是一个人才网站,它有演员姓名、头像和简历,所有这些都是用post\\u标题、特色图片和自定义字段创建的。

我正在使用Relavansi使我的搜索结果更好一些。然而,我遇到了一个问题,如果用户搜索“John”,那么所有名字中有“John”的演员都会首先出现,然后是简历(自定义字段)中有“John”的人。

但是如果用户搜索,比如说“西班牙语”(意思是他们正在寻找一个会说西班牙语的演员),结果会随机出现,而不是按任何顺序出现。我希望他们按照帖子的标题(也是演员的名字)排序。

因此,简短的版本是:如果用户搜索一个名称,它应该首先找到这些名称。如果用户搜索某个字段,该字段应按字母顺序显示。

我意识到我可能需要两个不同的搜索表单来搜索这个字段,或者至少需要两个不同的字段,我知道如何创建多个带有隐藏字段的表单来区分(这很好),但我不知道如何做到这一点,仍然使用Relavanssi或类似的插件来运行这两个搜索。

1 个回复
SO网友:s_ha_dum

我没有安装Relevansii,但它ooks like you can hook to relevanssi_search_ok and return false, and Relevansii will pass back the unmodified search.

add_filter(\'relevanssi_search_ok\', \'__return_false\');
我假设Relevansii使用的是主题提供的普通搜索表单,这意味着您可以修改或创建,searchform.php 要包含问题注释中提到的复选框,请执行以下操作:

我认为最好的解决方案是在1个搜索字段下面添加一个复选框选项,标记为“仅搜索简历”

类似于(示例中的二十一形式):

<form method="get" id="searchform" action="<?php echo esc_url( home_url( \'/\' ) ); ?>">
    <label for="s" class="assistive-text"><?php _e( \'Search\', \'twentyeleven\' ); ?></label>
    <input type="text" class="field" name="s" id="s" placeholder="<?php esc_attr_e( \'Search\', \'twentyeleven\' ); ?>" />
    <input type="checkbox" name="torelornottorel" />
    <input type="submit" class="submit" name="submit" id="searchsubmit" value="<?php esc_attr_e( \'Search\', \'twentyeleven\' ); ?>" />
</form>
然后。。。

function relavansii_toggle() {
  if (is_search() && isset($_GET[\'torelornottorel\'])) {
    return false;
  }
}
add_filter(\'relevanssi_search_ok\', \'relavansii_toggle\');
该软件不保证适用于任何目的,包括适用于其预期目的。

也许这会让你开始。

结束

相关推荐

Search Page Returns Nothing

我现在正在做这个website 测试表明搜索页面工作不正常。每次有人搜索某个东西,结果都是空白的。搜索页面的代码如下所示。Search Form:<form role=\"search\" method=\"get\" id=\"searchform\" action=\"/search/\" > <div><label class=\"screen-reader-text\" for=\"s\">Search for:</label>&#x

使用Relavanssi进行自定义字段搜索 - 小码农CODE - 行之有效找到问题解决它

使用Relavanssi进行自定义字段搜索

时间:2013-03-24 作者:Eckstein

我正在工作的网站是一个人才网站,它有演员姓名、头像和简历,所有这些都是用post\\u标题、特色图片和自定义字段创建的。

我正在使用Relavansi使我的搜索结果更好一些。然而,我遇到了一个问题,如果用户搜索“John”,那么所有名字中有“John”的演员都会首先出现,然后是简历(自定义字段)中有“John”的人。

但是如果用户搜索,比如说“西班牙语”(意思是他们正在寻找一个会说西班牙语的演员),结果会随机出现,而不是按任何顺序出现。我希望他们按照帖子的标题(也是演员的名字)排序。

因此,简短的版本是:如果用户搜索一个名称,它应该首先找到这些名称。如果用户搜索某个字段,该字段应按字母顺序显示。

我意识到我可能需要两个不同的搜索表单来搜索这个字段,或者至少需要两个不同的字段,我知道如何创建多个带有隐藏字段的表单来区分(这很好),但我不知道如何做到这一点,仍然使用Relavanssi或类似的插件来运行这两个搜索。

1 个回复
SO网友:s_ha_dum

我没有安装Relevansii,但它ooks like you can hook to relevanssi_search_ok and return false, and Relevansii will pass back the unmodified search.

add_filter(\'relevanssi_search_ok\', \'__return_false\');
我假设Relevansii使用的是主题提供的普通搜索表单,这意味着您可以修改或创建,searchform.php 要包含问题注释中提到的复选框,请执行以下操作:

我认为最好的解决方案是在1个搜索字段下面添加一个复选框选项,标记为“仅搜索简历”

类似于(示例中的二十一形式):

<form method="get" id="searchform" action="<?php echo esc_url( home_url( \'/\' ) ); ?>">
    <label for="s" class="assistive-text"><?php _e( \'Search\', \'twentyeleven\' ); ?></label>
    <input type="text" class="field" name="s" id="s" placeholder="<?php esc_attr_e( \'Search\', \'twentyeleven\' ); ?>" />
    <input type="checkbox" name="torelornottorel" />
    <input type="submit" class="submit" name="submit" id="searchsubmit" value="<?php esc_attr_e( \'Search\', \'twentyeleven\' ); ?>" />
</form>
然后。。。

function relavansii_toggle() {
  if (is_search() && isset($_GET[\'torelornottorel\'])) {
    return false;
  }
}
add_filter(\'relevanssi_search_ok\', \'relavansii_toggle\');
该软件不保证适用于任何目的,包括适用于其预期目的。

也许这会让你开始。