私のデフォルトの検索クエリ:
example.com/search/?search_text=keyword
私がそれを変えたいのは:
example.com/search/keyword
だから私はこれを私のfunction.php
に追加しました
add_rewrite_rule('^search/([^/]*)?','index.php?pagename=search&search_text=$matches[1]','top');
英語のアルファベットには問題なく動作しますが、私が次のように自分の言語でキーワードを検索するときはいつでも:
example.com/search/kırmızı
ページのタイトルはk%C4%B1rm%C4%B1z%C4%B1
となり、結果は返されません。
詳細が必要な場合はお知らせください。
これはエンコーディングが原因で起こっています。私はあなたがあなたがそのテンプレートの中でsearch_text
を取得して使用するあなたの検索ページに関数があると思います。その前にURLをデコードする必要があります。
urldecode()
関数はあなたが探しているものです。あなたの文字列もUTF-8でエンコードされているので、これがあなたが必要としているものです:
$string = utf8_decode( urldecode( $_GET['search_text'] ) );
今すぐあなたの検索でデコードされた文字列を使用することができます。