概要
update_optionアクションは、WordPressでサイトオプションの値を更新する際にトリガーされます。このアクションは、特定のオプションが保存された直後に実行され、オプションの更新に依存するカスタム動作や処理を実装するためによく利用されます。例えば、オプションが変更された際に他のデータを再計算したり、キャッシュをクリアしたりするために使われます。
このアクションは、以下のような状況で一般的に使用されます:
1. サイト設定の変更
2. プラグインの設定更新
3. テーマのオプション管理
4. キャッシュの無効化
5. ログの記録
6. メール通知の送信
7. APIとの連携
8. デバッグのためのトリガー
構文
do_action('update_option', $option, $old_value, $value);
パラメータ
$option(string): 変更されたオプションの名前。$old_value(mixed): オプションの旧値。$value(mixed): 新しいオプションの値。
戻り値
update_optionアクション自体は戻り値を返しませんが、オプションの値の更新は成功したかどうかを示すブール値を持つupdate_option()関数が関数の結果となります。
関連する関数
https://refwp.com/?titleonly=1&s=update_option
使用可能なバージョン
update_optionアクションは、WordPressのバージョン 1.5 から利用可能です。
コアファイルのパス
wp-includes/option.php
この関数のアクションでの使用可能性
| アクション | 使用例 |
|---|---|
| mu_plugin_loaded | |
| registered_post_type | |
| plugins_loaded | |
| wp_roles_init | |
| setup_theme | |
| after_setup_theme | |
| set_current_user | |
| init | 〇 |
| register_sidebar | |
| wp_loaded | |
| send_headers | |
| parse_query | |
| pre_get_posts | |
| wp | 〇 |
| template_redirect | |
| get_header | |
| wp_head |
サンプルコード
サンプル 1: オプションの変更をログに記録する
add_action('update_option', 'log_option_change', 10, 3);
function log_option_change($option, $old_value, $value) {
error_log("Option '{$option}' changed from '{$old_value}' to '{$value}'");
}
このコードは、オプションが変更されるたびに、その変更をエラーログに記録します。
サンプル 2: オプションの更新後にキャッシュをクリア
add_action('update_option', 'clear_my_cache', 10, 3);
function clear_my_cache($option, $old_value, $value) {
if ($option == 'my_custom_option') {
// キャッシュクリア処理
my_cache_clear_function();
}
}
このコードは、特定のオプションが更新されたときにキャッシュをクリアします。
サンプル 3: オプション更新後にWebhooksを送信
add_action('update_option', 'send_webhook_on_option_update', 10, 3);
function send_webhook_on_option_update($option, $old_value, $value) {
$url = 'https://example.com/webhook';
$data = array('option' => $option, 'old_value' => $old_value, 'new_value' => $value);
wp_remote_post($url, array('body' => json_encode($data)));
}
このコードは、オプションが更新された際に指定したURLにWebhookを送信します。
サンプル 4: 自動バックアップを作成
add_action('update_option', 'backup_option_before_update', 10, 3);
function backup_option_before_update($option, $old_value, $value) {
// バックアップ用の処理
$backup_data = array('option' => $option, 'old_value' => $old_value);
file_put_contents('backup.json', json_encode($backup_data), FILE_APPEND);
}
このコードは、オプション変更前のデータをバックアップファイルに保存します。
サンプル 5: 管理者に通知を送る
add_action('update_option', 'notify_admin_on_option_change', 10, 3);
function notify_admin_on_option_change($option, $old_value, $value) {
if ($option == 'important_setting') {
wp_mail('admin@example.com', 'Setting Changed', "The setting '{$option}' has changed from '{$old_value}' to '{$value}'.");
}
}
このコードは、重要な設定が変更された際に管理者にメール通知を送信します。