概要
ninja_forms_save_setting_{$setting_id}
アクションは、Ninja Formsプラグインにおいて、特定の設定が保存された際にトリガーされるフックです。このアクションを使用することで、設定変更に応じた追加の処理を実行することができます。主に次のような機能を実装する際に利用されることが多いです。
- 設定値のバリデーション
- サードパーティサービスへの更新通知
- 設定変更のログ記録
- 特定の設定に基づいたカスタムアクションの実行
- デフォルト設定のオーバーライド
- 設定変更に伴うキャッシュのクリア
構文
add_action('ninja_forms_save_setting_{$setting_id}', 'custom_function_name', 10, 2);
パラメータ
$setting_id
: 保存された設定のID。$value
: 保存された設定値。
戻り値
このアクションは特に戻り値を持ちませんが、実行されたカスタム関数の処理結果に応じて様々な効果を生じさせることができます。
使用可能なNinja Formsのバージョン
このアクションはNinja Formsのバージョン3.0以降で使用可能です。
使用可能なWordPressのバージョン
WordPress 4.0以降であることが推奨されます。
サンプルコード
サンプル1: 設定変更のバリデーション
このコードは、特定の設定を保存する前に、その値が適切かどうかをチェックします。
add_action('ninja_forms_save_setting_my_setting', 'validate_my_setting', 10, 2);
function validate_my_setting($setting_id, $value) {
if (empty($value)) {
// 設定値が空の場合はエラーメッセージを出力
add_settings_error('my_setting', 'my_setting_error', '設定値は必須です。');
}
}
サンプル2: サードパーティサービスへの通知
このコードは、設定が変更された際に、外部APIに通知を送ります。
add_action('ninja_forms_save_setting_my_setting', 'notify_external_service', 10, 2);
function notify_external_service($setting_id, $value) {
$api_url = 'https://example.com/api/notify';
wp_remote_post($api_url, array('body' => json_encode(array('setting_id' => $setting_id, 'value' => $value))));
}
サンプル3: 設定変更のログ記録
以下のコードは、設定が保存されるたびにその内容をログファイルに記録します。
add_action('ninja_forms_save_setting_my_setting', 'log_setting_change', 10, 2);
function log_setting_change($setting_id, $value) {
$log_message = "Setting {$setting_id} changed to: {$value}n";
file_put_contents(__DIR__ . '/settings.log', $log_message, FILE_APPEND);
}
サンプル4: カスタムアクションの実行
このコードは、特定の設定が保存された際に、別のカスタムアクションを実行します。
add_action('ninja_forms_save_setting_my_setting', 'execute_custom_action', 10, 2);
function execute_custom_action($setting_id, $value) {
if ($value == '特定の条件') {
do_action('custom_action_hook');
}
}
サンプル5: キャッシュのクリア
このコードでは、設定が変更された際に、キャッシュをクリアします。
add_action('ninja_forms_save_setting_my_setting', 'clear_cache_on_setting_change', 10, 2);
function clear_cache_on_setting_change($setting_id, $value) {
if ($setting_id === 'my_cache_setting') {
// キャッシュクリア処理
wp_cache_flush();
}
}
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
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 |