WordPressでサイトのURLを取得する方法を整理してみた。

WordPressでは以下のように複数の方法(テンプレートタグ)でサイトのURLを取得できます。

  • get_bloginfo(‘home’)
  • get_bloginfo(‘siteurl’)
  • get_bloginfo(‘url’)
  • get_bloginfo(‘wpurl’)
  • home_url()
  • site_url()

これらの関数は多くの環境では同じ値を返していますが、使い分けをきちんと理解していないと不具合が発生することがあります。

非推奨となっているテンプレートタグ

以下の二つの方法はすでに非推奨になっています。
自作のプラグインやテーマで使用している場合には、他の方法を使用しましょう。

  • get_bloginfo(‘home’)
  • get_bloginfo(‘siteurl’)

別名になっているテンプレートタグ

以下のテンプレートタグは、単純に別のテンプレートタグのエイリアス(別名)となっています。
なるべく元の関数をコールするようにしたほうがベターです。

元の関数 エイリアス
home_url() get_bloginfo(‘url’)
site_url() get_bloginfo(‘wpurl’)

以上で、6つあった方法の中から、2つの方法に絞ることが出来ました。

では残りの二つは、それぞれ何が違うの?

home_url()

ソースを見ると以下のような感じでした。

  • home_url() は、[ダッシューボード]-[設定]の「サイトのアドレス(URL)」を参照している。
  • パラメータでhttpやhttpsなどのスキーマを指定することができ、httpsの自動認識もサポートしている。
  • URLの末尾に付加するパスの指定も可能。

site_url()

  • site_url() は、[ダッシューボード]-[設定]の「WordPressのアドレス(URL)」を参照している。
  • パラメータでhttpやhttpsなどのスキーマを指定することができ、httpsの自動認識もサポートしている。
  • URLの末尾に付加するパスの指定も可能。

まとめ

  • サイト来訪者に公開されているブログのURLを取得するときには、site_url() を使うべし。
  • プラグインやテーマなどで、WordPressのコアファイルのURLを取得するときや、WP_Rewriteクラスを使ってゴニョゴニョしたいときには、home_url() を使うべし。
  • httpsの自動認識やフィルターフックが実装されているので、get_option() よりも、home_url() や site_url() を使ったほうが幸せになれる。
  • bloginfo() や get_bloginfo() を使うよりも文字数が少ないので、ほんのちょっとオトクな気分になれる。