ワードプレスのupdate_network_optionアクションの使用方法・解説

概要

update_network_optionアクションは、WordPressのネットワーク(マルチサイト)環境でのネットワークオプションを更新した際に発火します。このアクションは、ネットワークオプションを更新した直後の処理を行うために使用され、以下のような機能を実装する際によく使われます。

  1. ネットワークオプションの変更時にカスタムフックを設定する
  2. ネットワーク設定変更によるキャッシュのクリア
  3. 外部APIへの通知や呼び出し
  4. プラグインの設定をネットワーク単位で管理する
  5. 管理者への通知を送信する
  6. 設定変更時のログを記録する
  7. 必要に応じたリダイレクト処理
  8. サイトのメタデータを更新する処理

構文

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

この関数について質問する


上の計算式の答えを入力してください