(8/31まで)高価なキッチン用品が30日間試せる

get_bloginfoとget_optionどちらを使うべき?

テンプレートファイルをいじりはじめると、WordPressの各種設定情報にアクセスするのにget_bloginfoとget_option、二通りのやり方があるのに戸惑います。(厳密に言えば、さらに専用関数の存在もあるのですが)

例えばサイトのタイトル取得は、
get_bloginfoでは get_bloginfo('name')
get_optionでは get_option('blogname')
で取得ができます。

いったいどちらを使うべきなのか、何が違うのかを調べてみました。

get_bloginfoのソースで確認

ソースを見ると、get_bloginfo('name')はget_option('blogname')を呼び出していることが分かりました。
つまり実態は一緒。直接呼び出しているか、間接的に呼び出しているかの違いでしかありません。
では、他の項目はどうなのか。
get_bloginfoで取得できる項目を一通り調べてみました。
ちなみに確認したバージョンは WordPress4.9.1 のソースです。

サイトのタイトル取得
get_bloginfo('name')
→呼び出し:get_option('blogname')

サイトのキャッチフレーズ取得
get_bloginfo('description')
→呼び出し:get_option('blogdescription');

WordPressアドレス(URL)
get_bloginfo('wpurl')
→呼び出し:site_url();

サイトアドレス (URL)
get_bloginfo('url')
→呼び出し:home_url();

メールアドレス
get_bloginfo('admin_email')
→呼び出し:get_option('admin_email');

サイトの言語
get_bloginfo('charset')

$output = get_option('blog_charset');
if ('' == $output) $output = 'UTF-8';
※get_optionの取得結果が空の場合はUTF-8を返すようになっています

使用中の WordPress のバージョン
get_bloginfo('version')
→グローバル変数の $wp_version; の値をそのまま返しています

WordPress の HTML ページの Content-Type
get_bloginfo('html_type')
→呼び出し:get_option('html_type');

WordPress の HTML ページのテキスト方向
get_bloginfo('text_direction')
→削除予定のため、 is_rtl() を使用しましょう。

WordPress の言語を返す。
get_bloginfo('language')
→__( 'html_lang_attribute' );
※get_optionに相当する項目はありません。

有効なテーマのプライマリー CSS ファイル(ふつうは style.css)の URL
get_bloginfo('stylesheet_url')
→呼び出し:get_stylesheet_uri();
※直接get_stylesheet_uri();を使用することが推奨されています。

有効なテーマのスタイルシートディレクトリーの URL
get_bloginfo('stylesheet_directory')
→呼び出し:get_stylesheet_directory_uri();
※直接get_stylesheet_directory_uri();を使用することが推奨されています。

有効なテーマのディレクトリー
get_bloginfo('template_url')
get_bloginfo('template_directory')
→呼び出し:get_template_directory_uri();
template_url, template_directory, どちらも同じ結果を返しています。
※get_template_directory_uri()(親テンプレートのディレクトリー)または get_stylesheet_directory_uri()(子テンプレートのディレクトリー)の使用が推奨されています。

ピンバック用 XML-RPC ファイルの URL を返す
get_bloginfo('pingback_url')
→呼び出し:site_url( 'xmlrpc.php' );

Atom フィードの URL を返す
get_bloginfo('atom_url')
→呼び出し:get_feed_link('atom');

RDF/RSS 1.0 フィードの URL を返す
get_bloginfo('rdf_url')
→呼び出し:get_feed_link('rdf');

RSS 0.92 フィードの URL を返す
get_bloginfo('rss_url')
→呼び出し:get_feed_link('rss');

RSS 2.0 フィードの URL を返す
get_bloginfo('rss2_url')
→呼び出し:get_feed_link('rss2');

コメントの Atom フィードの URL を返す
get_bloginfo('comments_atom_url')
→呼び出し:get_feed_link('comments_atom');

コメントの RSS 2.0 フィードの URL を返す
get_bloginfo('comments_rss2_url')
→呼び出し:get_feed_link('comments_rss2');

get_bloginfo('siteurl')
→削除予定。home_url() または get_bloginfo('url')の使用が推奨されている。

get_bloginfo('home')
→削除予定。 home_url() または get_bloginfo('url')の使用が推奨されている。

結局どちらを使うべきか

get_bloginfoとget_optionではオプションとして指定出来る引数の違いがあります。
このオプションを活用したい場合は、自ずとどちらを使用するかは決まってくるでしょう。

get_bloginfo( $show, $filter );
第2引数によって wptexturize() のフィルタリングを実行してから値を取得できる(省略した場合は何もしない)

get_optionでは値が存在しなかった場合のデフォルト値を指定出来ます。
get_option( $option, $default );
第2引数を省略した場合、値が存在しなかった場合はfalseが返るようになります。
ちなみにget_bloginfoで間接的にget_optionを呼び出しているものは、全て第2引数が省略されているため、値が存在しなかった場合は、一律falseが返ってくることになります。

第2引数のオプションを活用しないのであれば、直接get_optionを呼び出す方がオーバーヘッド分、若干早くなるので、そちらが良さそうではあります。

また、'get_stylesheet_url' など、専用関数の使用を推奨されている場合はそちらを使用すべきです。

get_optionではget_bloginfo以上に色々な項目を取得できるため、それらを取りたいのであれば当然get_optionを使用するしかありません。

'siteurl'の注意点

get_bloginfo( 'siteurl' )(非推奨)と、get_option('siteurl')は別物である。
get_option('siteurl')はget_bloginfo( 'wpurl' )と同じである。

参考 get_bloginfoCodex 参考 get_optionCodex 参考 general-template.phpWordPress.org 参考 option.phpWordPress.org

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です