web-dev-qa-db-ja.com

add_rewrite_ruleが言語固有の文字に対して機能しない

私のデフォルトの検索クエリ:

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となり、結果は返されません。

詳細が必要な場合はお知らせください。

2
HOY

これはエンコーディングが原因で起こっています。私はあなたがあなたがそのテンプレートの中でsearch_textを取得して使用するあなたの検索ページに関数があると思います。その前にURLをデコードする必要があります。

urldecode() 関数はあなたが探しているものです。あなたの文字列もUTF-8でエンコードされているので、これがあなたが必要としているものです:

$string = utf8_decode( urldecode( $_GET['search_text'] ) );

今すぐあなたの検索でデコードされた文字列を使用することができます。

2
Jack Johansson