如何在搜索栏中将用户的智能报价更改为哑巴报价?

时间:2019-12-13 作者:StuSays

我有一个问题,智能引号(curly)不会返回任何搜索结果,但哑引号(direct)会给出我所期望的结果。

我想给所有用户相同的体验,所以我需要允许在搜索栏中输入智能或非智能报价,但最终会返回带有非智能报价的产品,因为它当前在DB中

我需要对双引号和单引号都这样做。

1 个回复
SO网友:Ryan Hoover

试试这个。这是一个过滤搜索查询并用其“哑”等价物替换任何智能引号的函数。

<?php

/**
 * Filter smart quotes out of a search query.
 * Replace them with "dumb" quotes.
 *
 * @param WP_Query $query Instance of WP_Query.
 */
function filter_search_smart_quotes( $query ) {
    if ( $query->is_search() ) {
        $search = $query->get( \'s\' );

        $smart_quotes = array(
            chr( 145 ),
            chr( 146 ),
            chr( 147 ),
            chr( 148 ),
            chr( 151 ),
        );

        $dumb_quotes = array(
            "\'",
            "\'",
            \'"\',
            \'"\',
            \'-\',
        );

        $search = str_replace( $smart_quotes, $dumb_quotes, $search );

        $query->set( \'s\', $search );
    }
}
add_action( \'pre_get_posts\', \'filter_search_smart_quotes\' );

相关推荐

Live search by custom tag

实时搜索:$the_query = new WP_Query( array( \'s\' => esc_attr( $_POST[\'keyword\'] ), \'post_type\' => \'custom_type\', \'sentence\' => \'true\' )); if( $the_query->have_posts() ) : while( $the_query->have_posts() ): $the_query->t