0

我在我的主题中使用以下搜索功能。

我想通过删除任何重音字符(如 é、ó、í 等)来操纵放入 URL 中的 $_GET 变量。关键是 URL 中没有任何特殊字符。Wordpress 有一个功能remove_accents可以完成将重音字符转换为非重音字符的功能,但我不确定其余的......

谢谢!

我怎样才能做到这一点?

// SEARCH FORM
function bam_search_form($echo = true) {
    do_action( 'get_search_form' );

    $uri = $_SERVER["REQUEST_URI"];

    global $blog_id;
    $searchtext = 'Buscá';

    $search_form_template = locate_template('searchform.php');
    if ( '' != $search_form_template ) {
        require($search_form_template);
        return;
    }

    $form = '<form role="search" method="get" id="searchform" action="' . esc_url( home_url( '/' ) ) . '" >
    <div><input type="text" value="'.$searchtext.'" name="s" class="s c1 caps c3h" />';

    $form .= form_extend($uri, $form);

    $form .= '<input type="submit" id="searchsubmit" class="c1" value="." />
    </div>
    </form>';

    if ( $echo )
        echo apply_filters('get_search_form', $form);
    else
        return apply_filters('get_search_form', $form);
}
4

1 回答 1

1

您可以实现一个提交 javascript 函数来替换搜索字符串字符

改变

$form = '<form role="search" method="get" id="searchform" action="' . esc_url( home_url( '/' ) ) . '" >
    <div><input type="text" value="'.$searchtext.'" name="s" class="s c1 caps c3h" />';

$form = '<form role="search" onsubmit="changeSearch()" method="get" id="searchform" action="' . esc_url( home_url( '/' ) ) . '" >
    <div><input type="text" id="searchvalue" value="'.$searchtext.'" name="s" class="s c1 caps c3h" />';

并添加这个 javascript

function changeSearch(){
    var field = document.getElementById('searchvalue');
    var r= field.value.toLowerCase();
    r = r.replace(new RegExp(/\s/g),"");
    r = r.replace(new RegExp(/[àáâãäå]/g),"a");
    r = r.replace(new RegExp(/æ/g),"ae");
    r = r.replace(new RegExp(/ç/g),"c");
    r = r.replace(new RegExp(/[èéêë]/g),"e");
    r = r.replace(new RegExp(/[ìíîï]/g),"i");
    r = r.replace(new RegExp(/ñ/g),"n");                
    r = r.replace(new RegExp(/[òóôõö]/g),"o");
    r = r.replace(new RegExp(/œ/g),"oe");
    r = r.replace(new RegExp(/[ùúûü]/g),"u");
    r = r.replace(new RegExp(/[ýÿ]/g),"y");
    r = r.replace(new RegExp(/\W/g),"");
    field.value = r;
}

您还可以添加更多替换模式。

于 2012-05-17T07:26:37.367 回答