Blog

WordPressのループ外で現在のページURLを取得する方法

2017.11.27 2020.10.25 WordPress

WordPressで現在のページURLを取得する場合、ループ内であれば以下のように書けば問題なく取得できます。

<?php the_permalink(); ?>

しかし今回は、ループ外で取得する必要がありました。

WordPressの関数をなんか使えばいけるだろうと軽く考えていたんですが、案外と難航したので今後のためにもメモ。

WordPressのループ外で現在のページURLを取得する方法

<?php echo (empty($_SERVER["HTTPS"]) ? "http://" : "https://") . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]; ?>

上記のように書けば、現在のページURLのプロトコル(http://またはhttps://)からパスまで取得できます。

またプロトコルから取得する必要がない場合はパスのみ、ホスト名+パスという形で取得することもできます。

現在のページのパスのみ取得する
<?php echo $_SERVER["REQUEST_URI"]; ?>
現在のページのホスト名を取得する
<?php echo $_SERVER["HTTP_HOST"]; ?>
現在のページのホスト名+パスを取得する
<?php echo $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]; ?>
現在のページのプロトコル+ホスト名を取得する
<?php echo (empty($_SERVER["HTTPS"]) ? "http://" : "https://") . $_SERVER["HTTP_HOST"]; >?>

これはWordPressだとhome_url();で取得できるので使う必要はないと思います。

WordPressじゃなくても使えます

一応言っておくと、上記はWordPressの関数ではないのでPHPで作成したWebページであれば使えます。

もしHTMLサイトで使いたい場合は、使いたいHTMLファイルの拡張子を「.html」から「.php」に変換してPHPファイルにした後に編集すれば大丈夫です。