wordpressのマルチサイト構成でサブドメインだけを取得したい
サブドメインだけを返す関数は存在しない
マルチサイト構成を利用したwordpressのブログサービスを開発するにあたり、マルチサイト初期化プラグインをベースに開発しているのだが、
wordpressにサブドメイン名だけを返す関数が無いようなので、プラグイン内に関数を作成してみた。
サブドメイン取得関数
マルチサイト初期化プラグイン内に以下の関数を書いた。
function get_subdomain() { $url = $_SERVER['HTTP_HOST']; $domain_array = explode('.', $url); $sub = $domain_array[0]; $c_domain = count($domain_array); if ( $c_domain > 2 ) { return $sub; } else { return false; } }
関数の利用方法は以下のようになる。
var_dump($this->get_subdomain());
var_dumpするとサブドメインがstring型で返される。また、ルートドメインの場合にはfalseが返される。
利用シーン
マルチサイト構成のサブドメイン設定でバリデーションの条件を変更で記事にしてみたのだが、マルチサイト内で管理系のブログというものが存在し、そのブログに対して
- 4文字未満
- ハイフンを含む
サブドメイン名を設定している。
そのサブドメイン名が設定されたブログを判定する際に上で定義した関数を利用している。具体的には、
if( strpos($this->get_subdomain(), "-") !== false or mb_strlen($this->get_subdomain(), "UTF-8") < 3 ) { }
上のように4文字未満のサブドメインやハイフンを含むサブドメインを判定する際に利用できる。
関数を用意しておけば、サブドメインを利用しようとしたときに迷うことなく開発を進めることができる。