WordPressには、サイト全体の設定値をデータベースに保存・取得するための便利な関数があります。それが get_option()
と update_option()
です。
これらの関数を使うことで、テーマやプラグインの設定値を管理しやすくなります。
この記事では、それぞれの関数の使い方と注意点を解説します。
目次
get_option() とは?
get_option()
は、WordPressの wp_options
テーブルから指定されたオプション名に紐づく値を取得する関数です。
構文
$value = get_option( 'option_name', $default );
option_name
: 取得したいオプションの名前(文字列)$default
: 該当するオプションが存在しない場合のデフォルト値(省略可能)
使用例
$admin_email = get_option( 'admin_email' );
この例では、サイト管理者のメールアドレスを取得しています。
update_option() とは?
update_option()
は、指定したオプション名に新しい値を保存(または更新)するための関数です。
指定したオプションがまだ存在しない場合は、自動的に新しく追加されます。
構文
update_option( 'option_name', $value );
option_name
: 更新するオプション名$value
: 保存したい値(文字列、配列、数値など)
使用例
update_option( 'my_plugin_setting', 'enabled' );
この例では、my_plugin_setting
という設定を 'enabled'
に更新しています。
delete_option() と組み合わせる
オプションを削除したい場合は delete_option()
を使います。
delete_option( 'my_plugin_setting' );
これは不要になったオプションや初期化処理時に便利です。
シリアライズされたデータも保存できる
update_option()
では配列やオブジェクトも自動的にシリアライズして保存され、get_option()
でアンシリアライズされて戻ってきます。
$data = array( 'color' => 'blue', 'font' => 'Arial' );
update_option( 'theme_preferences', $data );
$saved_data = get_option( 'theme_preferences' );
このようにして複雑な設定データも扱えます。
WordPressの update_option()
では、配列やオブジェクトといった複雑なデータ構造も保存可能です。これは、PHPの「シリアライズ(serialize)」という仕組みによって実現されています。
シリアライズとは?
シリアライズとは、配列やオブジェクトなどの構造化されたデータを、文字列に変換して保存・転送できるようにする処理のことです。
逆に、保存された文字列を元の構造に戻す処理を「アンシリアライズ(unserialize)」と呼びます。
WordPressでは、update_option()
の内部で自動的にシリアライズされ、get_option()
で取得するときには自動的にアンシリアライズされて戻ってくるため、開発者側が意識する必要はほとんどありません。
実際の例
$data = array( 'color' => 'red', 'font' => 'Verdana' );
update_option( 'design_setting', $data );
$retrieved = get_option( 'design_setting' );
// $retrieved は array( 'color' => 'red', 'font' => 'Verdana' ) になる
このように、配列をそのまま保存・取得できます。
注意点
- シリアライズされるのは、PHPで扱えるデータ型のみです。リソース型などは保存できません。
- 保存前に文字列化されるため、人間がデータベース上で直接読みにくくなることがあります。
- 自作のクラスインスタンスなどを保存する場合、後でクラス定義がないとアンシリアライズ時にエラーになることがあります。
よくある用途
- プラグインの設定値保存
- 管理画面で入力されたカスタム設定の保存
- テーマ独自オプションの永続化
使用上の注意
- 不要なデータはこまめに削除しないと
wp_options
テーブルが肥大化する可能性があります。 autoload
の影響で大量のオプションを保存しすぎるとパフォーマンスに悪影響が出る場合があります。get_option()
で頻繁にアクセスする値はキャッシュされるため、基本的には高速です。
まとめ
get_option()
と update_option()
は、WordPressのデータ永続化の基本ともいえる関数です。
テーマやプラグインで何かしらの設定を保存・取得したいときには、この2つを活用することで簡潔に処理が書けます。データ型にも柔軟に対応しているため、多様な用途に使える点も魅力です。
必要であれば、この内容に合わせて 管理画面でオプションを扱う方法(settings_fields()
や register_setting()
の活用)も追加できますので、お気軽にどうぞ。