WordPressのurlの取得方法がいろいろある

うすうす感じてたはいたものの、WordPressにはsite_urlとか、home_urlとか混乱させるものがある。基本的にWordPress本体のURLとブログのURLで通常は両方は同じなのだけど、
WordPress を専用ディレクトリに配置する
にあるように別々にすることが可能。

プラグインでプラグイン内部のURLを参照するときはWordPress本体のURLから作成しないといけない。面倒なのはurlの取り方が複数あること。

WordPress本体のURLの取得

get_bloginfo('wpurl');
get_option('siteurl');
site_url(); // 2.6以降

ブログのURLの取得

get_bloginfo('home'); // DEPRECATED 2.2
get_bloginfo('siteurl'); // DEPRECATED 2.2
get_bloginfo('url');
get_option('home');
home_url(); // 3.0以降

その他のURL

// 2.6以降
site_url();
admin_url();
content_url();
plugins_url();
includes_url();

その他定数

// 2.6以降
WP_CONTENT_URL
WP_PLUGIN_URL

結局のところ

URLの設定は管理ページからできることから推測できるように値はデータベースに格納されている、そのデータベースの値を取り出すのがget_option()となる。それ以外の呼び出し方も最終的にはget_optionをたどっているのだけど、基本的にプラグインやテーマのレイヤーからはデータベースの設定はなるべく意識しないようget_option()を使わずにget_bloginfoなどを使うポリシーなんだろう。

2.6以降ならプラグインのURLを作るにはWP_PLUGIN_URLを使うのが良い。定数が用意されていないWP_PLUGIN_URL、WP_CONTENT_URL以外の場合はadmin_url(), includes_url() を使うのが良いのだろう。また、wordpress直下のファイルを参照する場合に、site_url()を使うのだろう。

wp site_url() or get_bloginfo(‘wpurl’)
wp/wp-admin admin_url()
wp/wp-content WP_CONTENT_URL or content_url()
wp/wp-content/plugins WP_PLUGIN_URL or plugins_url()
wp/wp-includes includes_url()

とりあえずWordPress 2.6-3.0での情報。