altering search terms

时间:2012-09-05 作者:Force Flow

如何过滤或更改用户在搜索字段中输入的搜索词?有挂钩吗?

其想法是使用此功能过滤掉2-3个字母的“filler”单词(“on”、“and”、“The”等)

function prepSearchStr($str){
    $str=preg_replace(\'©[^a-zA-Z0-9]©\', \' \', $str);
    $str=preg_replace(\'©(?<=\\s|^)(([a-zA-Z]{1,3})|[0-9]{1,2})(?=\\s|$)©\', \' \', $str); //remove smaller groups of characters
    $exploded=explode(\' \', $str);
    $exploded=array_filter($exploded);
    return implode(\' \', $exploded); 
}

1 个回复
最合适的回答,由SO网友:Milo 整理而成

您可以使用parse_query:

function wpa64292_parse_query( $query ) {
    if( isset( $query->query_vars[\'s\'] ) && !empty( $query->query_vars[\'s\'] ) )
        $query->set( \'s\', prepSearchStr( $query->query_vars[\'s\'] ) );
}

add_action( \'parse_query\', \'wpa64292_parse_query\' );
请注意,它不会改变您在浏览器中看到的查询字符串,但如果您get_query_var(\'s\') 在模板中,您将看到它已被更改。

结束

相关推荐

Alphabetical search

可以创建字母顺序搜索,如下所示:A | B | C | D |等每个字母都是一个链接,因此当点击时,它会显示所有以“a”或“B”等开头的帖子。如果是这样,我该怎么做?