概要
update_network_option
アクションは、WordPressのネットワーク(マルチサイト)環境でのネットワークオプションを更新した際に発火します。このアクションは、ネットワークオプションを更新した直後の処理を行うために使用され、以下のような機能を実装する際によく使われます。
- ネットワークオプションの変更時にカスタムフックを設定する
- ネットワーク設定変更によるキャッシュのクリア
- 外部APIへの通知や呼び出し
- プラグインの設定をネットワーク単位で管理する
- 管理者への通知を送信する
- 設定変更時のログを記録する
- 必要に応じたリダイレクト処理
- サイトのメタデータを更新する処理
構文
do_action('update_network_option', $network_id, $option, $old_value, $new_value);
パラメータ
$network_id
: 更新されたネットワークのID。$option
: 更新されたネットワークオプションの名前。$old_value
: 更新前のオプションの値。$new_value
: 更新後のオプションの値。
戻り値
このアクション自体の戻り値はありませんが、フックを使用して登録された関数が必要な処理を実行することができます。
関連する関数
このアクションに関連する関数は、以下のリンクから確認できます。
https://refwp.com/?titleonly=1&s=update_network_option
使用可能なバージョン
update_network_option
アクションは、WordPressのバージョン4.6以降で利用可能です。
コアファイルのパス
このアクションは、WordPressのコアファイルである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_network_option', 'my_custom_network_option_update', 10, 4);
function my_custom_network_option_update($network_id, $option, $old_value, $new_value) {
if ($option === 'my_custom_option') {
// カスタム処理を実行
}
}
引用元: https://codex.wordpress.org/Plugin_API/Action_Reference
サンプル2: ネットワーク設定変更によるキャッシュのクリア
ネットワークオプションが変更されたときに、サイトのキャッシュをクリアします。
add_action('update_network_option', 'clear_site_cache', 10, 4);
function clear_site_cache($network_id, $option, $old_value, $new_value) {
// キャッシュクリア処理
if ($option === 'some_setting') {
wp_cache_flush();
}
}
引用元: https://developer.wordpress.org/reference/functions/wp_cache_flush/
サンプル3: 外部APIへの通知
ネットワークオプションが変更されたときに、外部APIに通知を送信します。
add_action('update_network_option', 'notify_external_api', 10, 4);
function notify_external_api($network_id, $option, $old_value, $new_value) {
if ($option === 'external_api_key') {
// APIへの通知処理
}
}
引用元: https://developer.wordpress.org/reference/functions/wp_remote_post/
サンプル4: プラグインの設定変更時にメール送信
ネットワークオプションが更新された際に、管理者へメールを送信します。
add_action('update_network_option', 'send_admin_notification', 10, 4);
function send_admin_notification($network_id, $option, $old_value, $new_value) {
if ($option === 'important_setting') {
wp_mail(get_option('admin_email'), '設定が変更されました', '設定が更新されました。');
}
}
引用元: https://developer.wordpress.org/reference/functions/wp_mail/
サンプル5: ログを記録
オプションの変更時にその内容をログに記録します。
add_action('update_network_option', 'log_option_change', 10, 4);
function log_option_change($network_id, $option, $old_value, $new_value) {
error_log("Network ID: $network_id, Option: $option, Old Value: $old_value, New Value: $new_value");
}
引用元: https://www.php.net/manual/en/function.error-log.php