私は他の答えを調べましたが、$_SERVER['REQUEST_URI']
が通常推奨されており、$_SERVER['HTTP_Host']
と共に現在のページのURIを取得するための受け入れられた答えであることがわかりました。
私はWPソースコードを見ました、そしてそれはそこでも広く使われています。
しかし、私はそれがIIS上で機能しないことについていくらかの論争を見つけました。おそらくそれは過去の問題にすぎなかったのでしょうか。それをチェックアウトするためにIISを自分のPCにインストールしようとさえしましたが、それを設定することができず、これを確認するだけのやり過ぎのようです。
欲しい情報が含まれている唯一のSERVER変数であるようです。
/ pane-slug/nggallery/tags/dark-colors/
強調表示されている例の部分は、NextGEN Gallery 2を介して追加され、$_SERVER['REQUEST_URI']
を介してのみアクセス可能です。以前は、get_query_varを使用してアクセスできましたが、もうアクセスできませんでした。
$_SERVER['REQUEST_URI']
が設定されていない場合は、手動で設定してPHP_SELF
とQUERY_STRING
に基づいて作成すると、同等の結果が得られません。
それで、WPインストールで常に利用できる$_SERVER['REQUEST_URI']
を当てにしても安全ですか?私はそれがWPコアコードがそれを使っているからだと思いますが、私は尋ねなければなりませんでした。
$_SERVER['REQUEST_URI']
はwp_fix_server_vars()
(ファイルwp-includes/load.php
)で埋められているので、WordPressでは空になりません。
この関数はプラグインがロードされる前にwp-settings.php
で呼び出されます。それであなたはそれを使うことができます。
しかし、常に値を逃がしてください。これはグローバルであり、他のコードによって変更される可能性があるため、その値を信頼することはできません。
別のケースでは、値にアクセスしています
filter_input(INPUT_SERVER, 'REQUEST_URI');
filter_input()
は常に元の値をとるので、WordPressによる書き込みアクセスはnotに影響します。したがって、これはより現代的でクリーンなアプローチですが、状況によっては失敗する可能性があります。 スタックオーバーフローのこのスレッド も参照。