WordPress のサイト URL を取得する関数 get_home_url() と get_site_url() の違い

WordPress の関数にサイトの URL を取得する関数がいくつかある。get_home_url()home_url()get_site_url()site_url() 等。プラグインやテーマを開発するなら、違いを把握しておいた方が良い。ということで、混乱しがちなこれらの関数の違いを整理しておこう。

結論から言うと、プログラムが内部で、必要なファイルのパスからそのファイルの URL を割り出したりするのに必要なのが、get_site_url() で、エンドユーザーが「自分のホームページってここなの!」ってみんなにサイトのホームとして晒せたい場所が get_home_url()。どういうことか見ていこう。

一般設定

まず、設定にサイトの URL を指定する箇所があるのを確認。

で、オプションのキーの名称も確認。

キー名

option key: siteurl
option key: home

WordPress AddresssiteurlSite Addresshome というキー名になっている。

オプションテーブル

これらがデータベースでどのように格納されているかも確認しておこう。

MySQL Workbench のスクリーンショット

{table name prefix}_options テーブル の option_name カラムの siteurlhome キーに option_value として入力した URL が格納されていることがわかる。

PHP コード

次に、コードを見ていこう。

home_url()

get_home_url()

site_url()

get_site_url()

違い

home_url()get_home_url()を、site_url()get_site_url() をそれぞれ呼び出しているので、

  • home_url() と get_home_url()
  • site_url() と get_site_url()

大まかにこの2種類があると考えて良い。先に確認したオプションキーも2つだった。そして、それぞれ

  • get_home_url()get_option( 'home' )
  • get_site_url()get_option( 'siteurl' )

というラインがある。

ここまでだと、どちらもユーザーが設定したURLを参照してるに過ぎない。そこで、plugins_url() の中身を見ると、WP_PLUGIN_URL という定数を参照している。そしてその定数は、WP_CONTENT_URL を参照している。そしてそれは、

とあるように、siteurl の値を取得している。

また、get_template_directory_uri() の中身を見ると、get_theme_root_uri() が使用され、それは content_url()site_url()plugins_url() を使用している。content_url() を見ると、plugins_url() ど同様に WP_CONTENT_URL を参照している。

まとめ

つまり、plugins_url()get_theme_directory_uri() などのプログラムが内部でパスを割り出す為に参照するのは siteurl オプションの値となっている。

一方、get_home_url() もしくは home_url() はテーマ(テンプレート)を扱うときに、エンドユーザーが指定した場所へリンクを生成する時などに使われている。ユーザーがポートフォリオのページを別途作っており、そこをホームページにしたい、といったケースで Site Address のオプションは設定され、 get_home_url() 及び home_url() はその home オプションに格納された値を参照する。

参考:https://wordpress.stackexchange.com/questions/20294/whats-the-difference-between-home-url-and-site-url

Leave a Reply

Your email address will not be published. Required fields are marked *