在WP搜索中搜索两个字符串

时间:2015-10-20 作者:Domas

在里面functions.php 我有以下过滤器:

function checkForAa($query){

    if($query->is_search){

        $search_string = get_query_var( \'s\' );

        if( stripos( $search_string , \'aa\' ) !== false){
            $new_string = str_ireplace( \'aa\' , \'å\' , $search_string );
        }elseif( stripos( $search_string , \'å\' ) !== false){
            $new_string = (str_ireplace( \'å\', \'aa\' , $search_string ));
        }

        if( !empty( $new_string ) ){
           $query->set( \'s2\', $new_string);
        }

    }
}

add_filter(\'pre_get_posts\', \'checkForAa\');
但是,当$new_string 不为空,不会作为新的搜索字符串添加。

任何帮助或指导都将不胜感激。

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

我不能百分之百确定您想要完成什么,但您可以通过将两个字符串串联起来“搜索两个字符串”:

function checkForAa($query){

    if($query->is_search){

        $search_string = $query->get( \'s\' );

        if( stripos( $search_string , \'aa\' ) !== false){
            $new_string = str_ireplace( \'aa\' , \'xxx\' , $search_string );
        }elseif( stripos( $search_string , \'å\' ) !== false){
            $new_string = (str_ireplace( \'å\', \'aa\' , $search_string ));
        }

        if( !empty( $new_string ) ){
           // Concatenate the strings
           $query->set( \'s\', $new_string.\' \'.$search_string);
        } 

    }
}

add_filter(\'pre_get_posts\', \'checkForAa\');

$s = \'aabcd\';
$query1 = new WP_Query( 
  array( 
    \'posts_per_page\' => 3, 
    \'s\' => $s
  ) 
);
var_dump($query1->request);
尽管字符串很长,但这种搜索效率很低,速度很快。

相关推荐

Media searching ignored

我们的网站使用WordPress,有很多媒体文件。我们网站的媒体名称格式如下[Car brand\'s name]-[number].jpg, 例如Tesla-1.jpg 或Aston Martin-3.jpg. 因此,我们可以通过搜索文章的名称轻松找到文章的特定媒体。但突然间,我们找不到媒体。我们正在尝试搜索名称为的媒体,但搜索结果不变。(不搜索任何内容时的媒体屏幕)(搜索Aston Martin时的媒体屏幕)当然,在填充搜索文本框后,它会显示一个加载图标,但结果总是一样的。为什么会发生这种情况?更新+