紛らわしい関数とオプションについて

テーマやプラグインを開発していると非常によく出てくる関数に bloginfo() や get_bloginfo() 、そして get_option() などがあり、そのパラメータとしてurl、wpurl と home、siteurl といったオプションがよく指定される。

これらの頻出関数とオプションの違いが紛らわしいのでまとめておこうと思う。

WordPress のフォーラムでも同様の疑問を質問している人もおり、誰もがあれ?と思うことなのかもしれない。

さて、get_bloginfo() と bloginfo() の違いは返り値があるか、そのまま出力するかの違いで、値を変数に保存して何か処理する必要がなければ、bloginfo() でそのまま出力してしまえばいい。これは明瞭だと思う。

get_bloginfo() と get_option() の違いだが、同様のオプションを指定したりできるのだが、基本的にテーマ開発で役に立ちそうなオプションがあるのが get_bloginfo() で、フィルタリングされた値が返ってくるものが多い。一方で、WordPress の各種設定をデータベースから直接呼び出すのが get_option() だと思う。そのため、プラグイン開発では、get_option() の方がよく使われる。

さて、WordPress のURLには、WordPress のアドレス(実際にWordPressがインストールされたURL)とサイトのアドレスの2つがある。WordPressをインストールしたディレクトリとサイトのディレクトリが同じ場合は全く同じURLになるので問題ないのだが、異なる場合が多々あり、テーマ・プラグイン開発者としてはこの違いをはっきり分かっていないと、きちんと表示できない、動作しない、という状況が生まれてしまう。

get_bloginfo() または bloginfo() で上記2つのURLを表示するオプションは、

  • url – サイトのURL – get_bloginfo('url')
  • wpurl – WordPressのURL – get_bloginfo('wpurl')

となる。ちなみにサイトのURLを指定するオプションとして、home と siteurl もあるが重複ということで、url を使用するように薦められている。

一方で、get_option() でURLを取得するオプションは、

  • home – サイトのURL – get_option('home')
  • siteurl – WordPressのURL – get_option('siteurl')

となる。ここであれ?と思うのが、先ほどの重複したオプションとはいえ、get_bloginfo() で siteurl を指定するとサイトのURLが返ってくるのに、get_option() では WordPress のURLを返す、というところではないだろうか。

get_bloginfo() や bloginfo() で指定する url と wpurl の方は直感的で覚えやすいが、get_option() の siteurl がサイトのURLではなく、WordPressのURLというのは名前からして一致していないような・・・。

何とも紛らわしいオプションではないだろうか。WordPress のテーマ開発者、プラグイン開発者は少し気を付けておいた方がよいのではないだろうか。

関数についての日本語のマニュアルはこちらから。

英語のマニュアルはこちらから。

»