wp_optionsテーブルとテーブル操作の関数|WordPressのデータベース

2020年2月5日

WordPressのテーブルの1つであるwp_optionsテーブルとそのテーブルを操作するWordPressの関数について詳しく解説します。wp_optionテーブルは、設定メニューから設定できる オプション設定情報(各種の設定情報)が格納されています。

WordPressのデータベース 11個

標準インストールで作成されるデータベースのテーブル一覧

テーブル名説明
wp_commentmeta各コメントのメタデータ情報(付随する補助的な情報)が格納
wp_commentsコメント・トラックバック・ピンバックデータを格納
wp_linksリンク作成で入力されたリンク情報を格納 ※非推奨
wp_optionsオプション設定情報(各種の設定情報)を格納
wp_postmeta各投稿記事特有のメタデータ情報(付随する補助的な情報)を格納
wp_posts投稿ページ・固定ページのほか、ページ、ナビゲーションメニューのデータを格納
wp_termsカテゴリ・タグに使われる語句の基本情報を格納
wp_term_relationshipswp_postsテーブルとwp_term_taxonomyのカテゴリ・タグとの関連付け情報を格納
wp_term_taxonomy wp_termsのデータ種類とデータ間の親子関係を格納
wp_usermeta各ユーザ特有のメタデータ情報(付随する補助的な情報)を格納
wp_users登録ユーザ情報を格納

WordPressの公式サイト

WordPress CodeX 日本語版 データベース構

今回は、この中で wp_options を詳しく解説

wp_optionsに格納されている情報

オプション設定情報(各種の設定情報)が格納されています。

  • 管理画面 > 設定 > 一般設定
  • 管理画面 > 設定 > 投稿設定
  • 管理画面 > 設定 > 表示設定
  • 管理画面 > 設定 > ディスカッション設定
  • 管理画面 > 設定 > メディア設定
  • 管理画面 > 設定 > プライバシー設定
  • 管理画面 > 設定 > パーマリンク設定
  • 管理画面 > 外観 > ウィジェット

管理画面で設定された情報のほか、トップページで設定した各テーマの情報やプラグインの設定情報も格納されます。

フィールド情報

フィールド種別備考
option_idbigint(20) unsignedauto_increment
option_namevarchar(64)
option_valuelongtext
autoloadvarchar(20)

テーブルのデータを表示されると分かるのですが、option_nameフィールドに「widget_categories」といった値が格納されている。ウィジェット関連だったら「 widget_ XXXX」といった値だし、プラグインだったら「プラグイン名_XXXX」となっている。利用停止中のプラグイン情報も残ったままになるため、プラグインをたくさん使っている人は、wp_optionsテーブルのデータ量が多くなっている。

wp_optionsテーブルの情報を取得・更新・追加

データ取得:get_option( $option , $default);

  • $option:取得したいオプションの名前
  • $default:取得したいオプションがなかった時の値(省略可能)

戻り値

  • 取得したいオプションがあった場合は、その値
  • 取得したいオプションがなかった場合、$defaultの値かfalse

例えば、サイトURLの情報を取得したい場合: get_option('siteurl’);

取得するオプションの名前の一覧はWordPressの公式サイトへ

WordPress CodeX 日本語版 関数リファレンス get_option

データ更新: update_option ( $option, $value, $autoload );

  • $option:更新したいオプションの名前
  • $value:更新する値
  • $autoload: ‘yes’ か ‘no’( wp_load_alloptionsで自動で読み出す設定。’no’とfalse以外が’yes’)

戻り値

  • true :追加・更新完了
  • false: 更新の必要がない場合

例えば、サイトURLの情報を更新したい場合: update_option('siteurl’, 'https://example.com’); また、$valueには配列を使うこともできる。まとまって管理したいデータであれば、1レコードずつに分けずに配列で格納した方が良い。

$value = array(
    'string' => 'test',
    'num'    => 123
);
 
update_option( 'my_option', $value );

データ追加: add_option ( $option , $value, $deprecated ,$autoload );

  • $option:追加したいオプションの名前
  • $value:追加する値
  • $deprecated:現在は使われていない(NULLか空)
  • $autoload: ‘yes’ か ‘no’( wp_load_alloptionsで自動で読み出す設定。’no’とfalse以外が’yes’)

戻り値

  • true :追加成功
  • false:失敗

設定の名前が衝突した場合は何もせず無視されるので、データが存在していなければ追加、存在していれば更新したいのであれば、条件分岐で処理を分けるよりもupdate_option()関数を使う方がシンプルに作ることができる。update_option()関数は、指定されたオプションデータがなければadd_optionを呼び出してくれる。

データ削除: delete_option ( $option );

  • $option:削除したいオプションの名前

戻り値

  • true :削除完了
  • false:データが存在しない場合や失敗

まとめ

wp_optionsテーブル構造とそのテーブルを操作するWordPressの関数をまとめてみました。簡単なプラグインであれば作れそうですが、作成する際はセキュリティやテーブルとの効率的なやりとりなどしっかりと調べてから作成することをお勧めします。プラグイン開発について気を付けておくべきことがまとめられている「WordPressプラグインのコーディングでありがちな10の間違いと設計時に考慮すべきこと」は非常に勉強になります