默认WP搜索不包括特定字符,可能吗?

时间:2014-08-15 作者:axel

我想知道是否可以自定义Wordpress的默认搜索模块。我有一个处理团队和团队新闻的网站。

有些球队的名字是这样写的

我希望搜索模块能够在搜索结果中管理这些团队,即使我查找字符串如下HMS, 或LA Dream, 或NY, 而不是用点填充字符。有没有人有什么建议,或者知道目前我还不知道的WP技巧?

提前感谢

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

搜索词打点器:

这里有一个使用request 筛选将不包含任何点的两个或三个字符的“虚线”单词附加到当前搜索词中。

因此,如果您的搜索字符串是,例如:

洛杉矶之梦

它将成为:

洛杉矶之梦洛杉矶。

以下是修改默认搜索的演示插件:

<?php
/**
 * Plugin Name: Search Terms Dotifier
 * Author:      birgire
 * Plugin URI:  http://wordpress.stackexchange.com/a/157972/26350
 * Version:     0.0.1
 */

add_filter( \'request\', function( $request ) {
    if( ! is_admin() && isset( $request[\'s\'] ) )
    {
        // Dont\' dotify these words (lower case):
        $exclude = array( \'the\', \'in\', \'it\', \'he\', \'she\', \'was\' );

        // Loop over search terms:
        $words = explode( \' \', $request[\'s\'] );
        foreach( (array) $words as $word )
        {
             // Words with two or three chars that don\'t contain any dots:
             if( mb_strlen( $word ) > 1
                 && mb_strlen( $word ) < 4 
                 && false === strpos( $word, \'.\' ) 
                 && ! in_array( mb_strtolower( $word ), $exclude, true ) 
             )
             {
                 // Append the \'dotted\' word:
                 $words[] = join( \'.\', str_split( $word ) ) . \'.\';
             }
         }
         $request[\'s\'] = join( \' \', $words );
    }
    return $request;
});
希望您能将此扩展到您的需要。

结束

相关推荐

Exclude Custom Taxonomies

我试图显示来自常规帖子部分和自定义帖子类型的最新帖子,从每个自定义帖子类型中排除一个自定义分类术语。但是最近的帖子部分没有显示任何内容。 <?php // the query $the_query = new WP_Query( array( \'post_type\' => array( \'post\', \'miss_behave\', \'emily_davies\',\'gemma_patel\',\'poppy