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」プラグインでも使っている方法ですから、まあ間違いないでしょう。
おつかれさまでした。