WordPress PHPでサイトのドメイン名を取得する方法

WordPressのPHPでサイトのドメイン名を取得する方法です。

WordPress PHPでサイトのドメイン名を取得する方法

WordPressでPHPのコードを書いているときに、サイトのドメイン名を取得したいと思いました。具体的には、Twitterカードのプロパティ「twitter:domain」を出力したかったからです。「twitter:domain」自体は必須じゃないので出力しなくてもいいのですが、「All in One SEO」プラグインでは出力されていたので同じ仕様に合わせようかなっと。

ここでは WordPressのPHPでサイトのドメイン名を取得する方法 を紹介します。


WordPressのPHPでサイトのドメイン名を取得する

今回は、PHPでサイトのドメイン名を取得する「3つの方法」を紹介します。

wp_parse_url()関数を使う

一つ目は「wp_parse_url()」関数を使う方法です。

WordPress「All in One SEO」プラグインのソースコードを解析したところ、この方法を使っていました。

mixed wp_parse_url( string $url [ , int $component = -1 ] )

第一引数にサイトのURLを設定し、第二引数にキー値を設定します。キー値の説明は下記のとおりです。

キー意味対応する$componentの値
'scheme'スキーマ(例: 'http')PHP_URL_SCHEME
'host'ホストPHP_URL_HOST
'port'ポート番号(例: 80)PHP_URL_PORT
'user'ユーザ名PHP_URL_USER
'pass'パスワードPHP_URL_PASSE
'path'パスPHP_URL_PATH
'query'クエリー部(?以降の部分)PHP_URL_QUERY
'fragment'フラグメント部(#以降の部分)PHP_URL_FRAGMENT

詳しくは下記サイトで確認ください。

https://elearn.jp/wpman/function/wp_parse_url.html

「wp_parse_url()」でドメイン名を取得するコードです。


// WordPressでサイトのドメイン名を出力する
echo wp_parse_url( home_url(), PHP_URL_HOST ); // www.saka-en.com

$_SERVER['SERVER_NAME']を使う

次にサーバー変数の「SERVER_NAME」から取得するという方法です。

現在のスクリプトが実行されているサーバーのホスト名です。 スクリプトがバーチャルホスト上で実行されている場合は そのバーチャルホスト名となります。

PHP: $_SERVER - Manual

$_SERVER['SERVER_NAME'] でドメイン名を取得するコードです。


// サイトのドメイン名を出力
echo $_SERVER['SERVER_NAME']; // www.saka-en.com

$_SERVER['HTTP_HOST']を使う

最後にサーバー変数の「HTTP_HOST」を使うやり方です。

現在のリクエストに Host: ヘッダが もしあればその内容。

PHP: $_SERVER - Manual

ヘッダー情報から「Host: ドメイン名」の値を返してくれるのだけれど、「もしあれば」なので、ヘッダーがない場合は正しいものが取得できない。なので、おすすめはしません。

$_SERVER['HTTP_HOST'] でドメイン名を取得するコードです。


// サイトのドメイン名を出力
echo $_SERVER['HTTP_HOST']; // www.saka-en.com

まとめ

WordPressのPHPでサイトのドメイン名を取得する方法を紹介しました。

このサイトはエックスサーバーで運用していますが、いずれのやり方でも同じ値が取れました。サーバー変数は環境によって変わるかもなので「wp_parse_url()」関数を使うのがいいと思います。実績あるWordPress「All in One SEO」プラグインでも使っている方法ですから、まあ間違いないでしょう。

おつかれさまでした。

この記事がお役に立ちましたら シェア をお願いいたします。