WordPressで公開ページのURLを取得するとき何を使っていますか?
投稿や固定ページなら「get_the_permalink()」、トップページは「get_bloginfo( ‘url’ )」が一般的でしょう。
それではカテゴリーページやタグのアーカイブ、作者のアーカイブなど、動的に作成されるページはどうしてますか?
「get_the_permalink()」でできるかと思いましたが、これだと、一覧の一番最初に出てくるページのURLになっちゃうんですよね。
困った..ということでいろいろと調べていたら、え?こんな簡単にできるの?というのがありましたので、シェアしておきます。
コードを使用する前に、ここをクリックして注意事項をご確認ください
本ページで掲載しているコードは、以下に了承した上で使用ください
- コードは商用・非商用問わず自由に使っていただいて構いませんが、コード追加による不具合やトラブルが発生しても当方では一切責任を負いません
- コードは有効化しているテーマのfunctions.php、style.cssなどへ追加することで機能します。それらのファイルへの変更を行うことに不安のある方は使用しないでください
- コードは本ページの公開日時点で私の環境において動作したものです。WordPressバージョン他環境の違いによって動作しないことがあります
- コードは、セキュリティ、コードの正確さなどにおいて完全なものではありません。中には紹介するコードを簡略化するために省略している部分があるものもありますので、ご自身でコードを十分に検証し、必要な部分の編集を行った上で使用するようにしてください
- 掲載しているのは参考コードです。自身の環境に合わせるための編集はご自身で対応いただく必要があります(コメント欄等から質問いただいても基本回答は致しません)
- 掲載しているコードの転載を禁じます(SNSで紹介いただいたり、本ページへのリンクを張っていただくことは大歓迎です)
以下のコードを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」で重複のおまじないをしているので、他で同名の関数がきても大丈夫かと思いますが、不具合等が起きても責任を負いません。また使用した際には出力される情報のチェックをお忘れなく!








コメントを残す