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 に答える