MENU

get_option()– Funciton –

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

単一の値(例:blognameadmin_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' が表示される(オプションが存在しない場合)

戻り値の型まとめ

オプション内容戻り値の型
単一の文字列stringMy WordPress Site(サイト名)
配列array['title' => 'Widget', 'id' => 1]
オブジェクトobject{ "title": "My Plugin", "version": "1.0" }
オプションが存在しない場合falsebool(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;

参考ポイント

homesiteurl の違い

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() の戻り値が false になるのはなぜですか?

      指定したオプションが存在しない場合、false が返されます。オプションが存在しないときのデフォルト値を設定したい場合、第二引数でデフォルト値を指定できます。

      get_option() はどのようなデータ型を返しますか?

      取得するオプションの内容に応じて、文字列・配列・オブジェクトなど さまざまなデータ型 を返します。

      get_option() で配列を取得したときに一部の要素が見つかりません。どうすればいいですか?

      配列の要素が正しく取得できているか確認するため、print_r() でデバッグするとよいです。

      get_option() で配列が返されるのはなぜですか?

      一部のオプション(例:widget_options)は、複数の設定情報を配列として保存するため、get_option() を使うと配列が返されます。

      オプションが更新されてもすぐに反映されません。どうすればいいですか?

      キャッシュが原因の場合があります。必要に応じて wp_cache_flush() でキャッシュをクリアしてください。

      get_option() は何回でも使って問題ないですか?

      はい。ただし、頻繁に呼び出すとパフォーマンスに影響するため、必要に応じて 結果を変数にキャッシュ することをおすすめします。

      まとめ

      get_option() は、WordPressのオプション値を取得するための 基本的かつ非常に重要なテンプレートタグ です。

      サイト全体の設定値やカスタムオプションを簡単に参照できるため、プラグインやテーマ開発では頻繁に使われます。関連する update_option()delete_option() も合わせて利用することで、柔軟なオプション管理が可能です。

      カスタマイズ例

      1