get_option()
は、 WordPressの設定オプションの値を取得するためのテンプレートタグ です。サイト全体の設定情報や、プラグイン・テーマで保存されたオプションデータを取得する際に使用されます。
機能の説明
get_option()
は、WordPressの オプションテーブル(wp_options) に保存されたデータを取得します。- サイト設定(例:サイト名、メールアドレスなど)やプラグイン・テーマで保存されたカスタムオプションの値を参照するのに便利です。
- 指定したオプションが存在しない場合は、
false
を返します。
パラメーター
$option
(必須)
- 取得したいオプションの 名前(文字列)。
- データベースの
wp_options
テーブル内に格納されている オプション名 を指定します。
例
'blogname'
: サイト名'admin_email'
: 管理者メールアドレス
$default(任意)
- オプションが存在しない場合に返すデフォルト値。
- この引数は、 オプションが見つからない場合の代替値 を設定するために使います。
- デフォルトでは
false
が返されますが、$default
に別の値を設定することで、エラーを防ぐことができます。
デフォルト値
false
パラメーターの例
// 基本的な使い方(オプション名のみ指定)
$site_name = get_option('blogname');
// 存在しない場合にデフォルト値を返す
$timezone = get_option('timezone_string', 'UTC');
戻り値
文字列(string
)
単一の値(例:blogname
や admin_email
)が保存されている場合、文字列で返されます。
echo get_option('blogname'); // "My WordPress Site"
配列(array
)
複数の値が配列として保存されている場合、配列で返されます。
$widget_options = get_option('widget_options');
print_r($widget_options); // 配列で保存されているウィジェット情報が表示される
オブジェクト(object
)
JSONエンコードされたデータやオブジェクトが保存されている場合、オブジェクト形式 で返されます。
$custom_data = get_option('custom_plugin_data');
echo $custom_data->title; // オブジェクトのプロパティにアクセス
false
指定したオプションが存在しない場合、デフォルトで false
を返します。
$non_existing = get_option('non_existing_option');
var_dump($non_existing); // bool(false)
デフォルト値
オプションが存在しない場合に 第2引数で指定したデフォルト値 が返されます。
$timezone = get_option('timezone_string', 'UTC');
echo $timezone; // 'UTC' が表示される(オプションが存在しない場合)
戻り値の型まとめ
オプション内容 | 戻り値の型 | 例 |
---|---|---|
単一の文字列 | string | My WordPress Site (サイト名) |
配列 | array | ['title' => 'Widget', 'id' => 1] |
オブジェクト | object | { "title": "My Plugin", "version": "1.0" } |
オプションが存在しない場合 | false | bool(false) |
デフォルト値(指定あり) | 任意 | 第2引数に設定したデフォルト値 |
オプションの型に応じた戻り値の取得
// 1. 文字列のオプション
$site_name = get_option('blogname');
echo 'サイト名: ' . $site_name;
// 2. 配列のオプション
$widget_settings = get_option('widget_options', []);
print_r($widget_settings);
// 3. オブジェクトのオプション
$custom_data = get_option('custom_plugin_data');
if ($custom_data) {
echo 'プラグインタイトル: ' . $custom_data->title;
}
// 4. 存在しないオプションのデフォルト値取得
$timezone = get_option('timezone_string', 'UTC');
echo 'タイムゾーン: ' . $timezone;
一般的なオプション一覧
WordPressの一般的なオプション名とその用途・設定場所をまとめたものです。get_option()
を使用することで、各オプションの値を取得できます。
admin_email
- 内容: サイト管理者のメールアドレス
- 設定場所: 一般設定
blogname
- 内容: サイトのタイトル
- 設定場所: 一般設定
blogdescription
- 内容: サイトのキャッチフレーズ(Tagline)
- 設定場所: 一般設定
blog_charset
- 内容: サイトの文字エンコード
- 設定場所: 読み込み設定
date_format
- 内容: 日付フォーマットの形式
- 設定場所: 一般設定
default_category
- 内容: 投稿のデフォルトカテゴリー
- 設定場所: 投稿設定
home
- 内容: サイトのホームURL
- 設定場所: 一般設定
- 備考:
get_bloginfo('url')
で取得するURLとは異なるため注意
posts_per_page
- 内容: 1ページに表示する投稿の最大数
- 設定場所: 読み込み設定
posts_per_rss
- 内容: フィードに表示する最新投稿の最大数
- 設定場所: 読み込み設定
siteurl
- 内容: WordPress のインストールURL
- 設定場所: 一般設定
- 備考: ホームURLとは異なり、
get_bloginfo('wpurl')
で取得できる
template
- 内容: 現在使用中のテーマ名
- 設定場所: テーマ設定
start_of_week
- 内容: カレンダーの週の始まりの曜日
- 設定場所: 一般設定
upload_path
- 内容: デフォルトのアップロード先パス
- 設定場所: メディア設定
users_can_register
- 内容: ユーザー登録の可否
- 設定場所: 一般設定
この一覧のオプションは、WordPressの基本的な設定を取得するために頻繁に使用されます。get_option()
関数を使って、これらの値を取得・利用することで、テーマやプラグイン内で柔軟なカスタマイズが可能になります。
使用例
サイト名と管理者メールを取得する例
$site_name = get_option('blogname');
$admin_email = get_option('admin_email');
echo 'サイト名: ' . $site_name . '<br>';
echo '管理者メール: ' . $admin_email;
参考ポイント
home
と siteurl
の違い
home
はトップページのURL、siteurl
はWordPressがインストールされているURL。2つが異なるケースでは使い分けに注意が必要です。
users_can_register
の使用
ユーザーが新規登録できるかどうかのチェックに使います。
if (get_option('users_can_register')) {
echo 'ユーザー登録が可能です。';
} else {
echo 'ユーザー登録は無効です。';
}
このように、これらのオプションを利用することで、サイトの基本的な情報にアクセスし、カスタマイズすることが可能です。
シンプルなコード例
$site_name = get_option('blogname');
echo 'サイト名: ' . $site_name;
- 第一引数 にオプション名(例:
blogname
)を渡すことで、対応する値が取得されます。 - サイト設定はもちろん、プラグイン・テーマで保存した設定値を取得する際にも活用されます。
- 存在しないオプション名 を渡すと、
false
が返るため、エラー処理を行うことが重要です。
サイトの管理者メールアドレスを取得する例
$admin_email = get_option('admin_email');
if ($admin_email) {
echo '管理者メールアドレスは: ' . $admin_email;
} else {
echo '管理者メールアドレスが設定されていません。';
}
admin_email
というオプション名を使い、サイトの管理者メールアドレスを取得しています。- オプションが存在する場合にその値を表示し、存在しない場合はエラーメッセージを表示しています。
一緒に使うことが多い関連タグ
update_option()
オプションの値を更新する テンプレートタグです。
update_option('blogname', '新しいサイト名');
blogname
オプションを「新しいサイト名」に変更します。
add_option()
新しいオプションを追加する テンプレートタグです。
add_option('custom_option', 'カスタムの値');
custom_option
という新しいオプションを追加します。
delete_option()
オプションの削除 を行うテンプレートタグです。
delete_option('custom_option');
custom_option
というオプションを削除します。
追加情報を取得したい場合
get_option()
の結果が配列やオブジェクトの場合、特定の要素を取得するためにループ処理や条件分岐が必要になることがあります。
$timezone = get_option('timezone_string');
if ($timezone) {
echo '現在のタイムゾーン: ' . $timezone;
} else {
echo 'タイムゾーンが設定されていません。';
}
get_theme_mod()
でテーマのカスタマイズ設定を取得
$header_color = get_theme_mod('header_textcolor');
echo 'ヘッダーテキストの色: ' . $header_color;
テーマのカスタマイズで設定された ヘッダーテキストの色 を取得します。
出力できる情報
- blogname: サイト名
- admin_email: 管理者のメールアドレス
- timezone_string: タイムゾーンの設定値
想定されるトラブル
オプションが取得できない
オプション名が正しくないか、オプションが存在しない場合。
解決方法
get_option()
の戻り値が false
の場合に、デフォルト値を表示する処理を追加する。
$option_value = get_option('non_existing_option', 'デフォルト値');
echo $option_value; // 存在しない場合は「デフォルト値」を出力
キャッシュが原因で値が更新されない
オプションの更新後にキャッシュがクリアされていない可能性がある。
解決方法
必要に応じて wp_cache_flush()
を使ってキャッシュをクリアする。
Q&A
まとめ
get_option()
は、WordPressのオプション値を取得するための 基本的かつ非常に重要なテンプレートタグ です。
サイト全体の設定値やカスタムオプションを簡単に参照できるため、プラグインやテーマ開発では頻繁に使われます。関連する update_option()
や delete_option()
も合わせて利用することで、柔軟なオプション管理が可能です。