WordPressで公開ページのURLを取得するとき何を使っていますか?

投稿や固定ページなら「get_the_permalink()」、トップページは「get_bloginfo( ‘url’ )」が一般的でしょう。

それではカテゴリーページやタグのアーカイブ、作者のアーカイブなど、動的に作成されるページはどうしてますか?

「get_the_permalink()」でできるかと思いましたが、これだと、一覧の一番最初に出てくるページのURLになっちゃうんですよね。

困った..ということでいろいろと調べていたら、え?こんな簡単にできるの?というのがありましたので、シェアしておきます。

以下のコードをfunctions.phpや自作プラグインのプログラムファイルへ追加します。

/*** 現在のURLを取得する ***/
if ( !function_exists( 'wp_get_current_url' ) ){
function wp_get_current_url() {
return home_url( $_SERVER['REQUEST_URI'] );
}
}

そして呼び出したいところで、「get_the_permalink()」などの代わりに「wp_get_current_url()」とするだけです。

ページをリクエストされた際に生成されるURLを取得するもので、カテゴリー一覧など限定されたものではなく、投稿・固定ページなどを含むサイト内すべてのURLがこの関数で引っ張り出せます。つまりもう前述の関数も条件分岐も必要ないということになるんですね。

何でこれがコアにないの?という位使うことが多いと思うんですけど...解決できました。

参考にさせていただいたページに感謝!:How to Get the Current Page URL in WordPress

一応「!function_exists」で重複のおまじないをしているので、他で同名の関数がきても大丈夫かと思いますが、不具合等が起きても責任を負いません。また使用した際には出力される情報のチェックをお忘れなく!