Web制作時のお問い合わせフォームはブロックエディタで編集できるSnow Monkey Formsを重宝しています。
そのままでも簡易のお問い合わせフォームとしてはすぐに設置できて便利なのですが、カスタマイズしようとするとフックの使用は避けられません。
そこでSnow Monkey Formsに用意されているアクションフック・フィルターフックを調査してみました。
Snow Monkey Forms の設定・カスタマイズ方法はこちらにまとめています。
Snow Monkey Formsのフィルターフック・アクションフックのデータの一覧
コードを調査した結果、2024年4月の調査で取り上げたフックは以下の23個です。現行版に存在するフックの総数を示すものではありません。
| フック名 | ファイルの場所 |
|---|---|
| snow_monkey_forms/complete/message | wp-content/plugins/snow-monkey-forms/App/Controller/Complete.php |
| snow_monkey_forms/system_error/message | wp-content/plugins/snow-monkey-forms/App/Controller/SystemError.php |
| snow_monkey_forms/administrator_mailer/skip | wp-content/plugins/snow-monkey-forms/App/Model/AdministratorMailer.php |
| snow_monkey_forms/administrator_mailer/is_sended | wp-content/plugins/snow-monkey-forms/App/Model/AdministratorMailer.php |
| snow_monkey_forms/administrator_mailer/after_send | wp-content/plugins/snow-monkey-forms/App/Model/AdministratorMailer.php |
| snow_monkey_forms/administrator_mailer/headers | wp-content/plugins/snow-monkey-forms/App/Model/AdministratorMailer.php |
| snow_monkey_forms/administrator_mailer/args | wp-content/plugins/snow-monkey-forms/App/Model/AdministratorMailer.php |
| snow_monkey_forms/auto_reply_mailer/skip | wp-content/plugins/snow-monkey-forms/App/Model/AutoReplyMailer.php |
| snow_monkey_forms/auto_reply_mailer/is_sended | wp-content/plugins/snow-monkey-forms/App/Model/AutoReplyMailer.php |
| snow_monkey_forms/auto_reply_mailer/after_send | wp-content/plugins/snow-monkey-forms/App/Model/AutoReplyMailer.php |
| snow_monkey_forms/auto_reply_mailer/headers | wp-content/plugins/snow-monkey-forms/App/Model/AutoReplyMailer.php |
| snow_monkey_forms/auto_reply_mailer/args | wp-content/plugins/snow-monkey-forms/App/Model/AutoReplyMailer.php |
| snow_monkey_forms/saved_files/survival_time | wp-content/plugins/snow-monkey-forms/App/Model/Directory.php |
| snow_monkey_forms/mailer/headers | wp-content/plugins/snow-monkey-forms/App/Model/Mailer.php |
| snow_monkey_forms/custom_mail_tag | wp-content/plugins/snow-monkey-forms/App/Model/MailParser.php |
| snow_monkey_forms/control/attributes | wp-content/plugins/snow-monkey-forms/App/Model/Setting.php |
| snow_monkey_forms/checkboxes/options | wp-content/plugins/snow-monkey-forms/App/Model/Setting.php |
| snow_monkey_forms/select/options | wp-content/plugins/snow-monkey-forms/App/Model/Setting.php |
| snow_monkey_forms/radio_buttons/options | wp-content/plugins/snow-monkey-forms/App/Model/Setting.php |
| snow_monkey_forms/validator/error_message | wp-content/plugins/snow-monkey-forms/App/Model/Validator.php |
| snow_monkey_forms/spam/validate | wp-content/plugins/snow-monkey-forms/App/Rest/Route/View.php |
| snow_monkey_forms/form/append | wp-content/plugins/snow-monkey-forms/App/Service/ReCaptcha/ReCaptcha.php |
| snow_monkey_forms/enqueue/fallback_style | wp-content/plugins/snow-monkey-forms/snow-monkey-forms.php |
Snow Monkey Formsのフィルターフック・アクションフックの解説
Snow Monkey Formsのフィルターフック・アクションフックをサンプルコード付きで、それぞれ詳しく解説していきます。
snow_monkey_forms/complete/message
このフックは、Snow Monkey Formsプラグインにおいて、フォーム送信完了後に表示されるメッセージをカスタマイズするために使用されます。
解説
フォーム送信後にユーザーに表示される完了メッセージは、デフォルトではフォームの設定で指定されたものが使用されます。
しかし、このフックを使用することで、プログラム側から動的にメッセージを変更することが可能になります。
例えば、送信されたフォームの内容に応じて、異なる完了メッセージを表示したい場合などに便利です。
パラメータ
$message(string): 完了メッセージの内容。$responser(object): フォームの送信結果を含むレスポンサーオブジェクト。$setting(object): フォームの設定情報を含む設定オブジェクト。
// フォーム送信完了時のメッセージをカスタマイズする
add_filter( 'snow_monkey_forms/complete/message', function( $message, $responser, $setting ) {
// 特定の条件に基づいてメッセージを変更
if ( $responser->get( 'your_custom_field' ) === '特定の値' ) {
$message = 'カスタムメッセージを表示します。';
}
return $message;
}, 10, 3 );snow_monkey_forms/system_error/message
このフックは、Snow Monkey Formsプラグインにおいて、システムエラーが発生した際に表示されるエラーメッセージをカスタマイズするために使用されます。
解説:
フォームの送信処理中にシステムエラーが発生した場合、ユーザーにはエラーメッセージが表示されます。このフックを使用することで、エラーメッセージの内容を動的に変更することができます。
下の例は表示メッセージを一律に変更します。エラーの原因を解消したり、送信失敗を成功へ変更したりするコードではありません。
パラメータ:
$message(string): エラーメッセージの内容。$responser(object): フォームの送信結果を含むレスポンサーオブジェクト。$setting(object): フォームの設定情報を含む設定オブジェクト。
add_filter( 'snow_monkey_forms/system_error/message', function ( $message ) {
return '送信を完了できませんでした。時間をおいて再度お試しください。';
} );snow_monkey_forms/administrator_mailer/skip
このフックは、Snow Monkey Formsプラグインにおいて、管理者宛のメール送信をスキップするかどうかを制御するために使用されます。
解説:
フォームの送信が成功した際に、通常は設定された管理者メールアドレスに通知メールが送信されます。
しかし、このフックを使用することで、特定の条件下で管理者へのメール送信をスキップすることができます。
例えば、フォームの内容に応じてメール送信を行わない場合や、テスト環境でのメール送信を抑制したい場合などに便利です。
パラメータ:
$skip(boolean): メール送信をスキップするかどうか。デフォルトはfalse(スキップしない)。$responser(object): フォームの送信結果を含むレスポンサーオブジェクト。$setting(object): フォームの設定情報を含む設定オブジェクト。
// 特定の条件下で管理者メールの送信をスキップする
add_filter( 'snow_monkey_forms/administrator_mailer/skip', function( $skip, $responser, $setting ) {
// フォームの入力値に応じて送信をスキップ
if ( $responser->get( 'your_custom_field' ) === '特定の値' ) {
$skip = true;
}
return $skip;
}, 10, 3 );snow_monkey_forms/administrator_mailer/is_sended
このフックは、Snow Monkey Formsプラグインにおいて、管理者宛のメールが送信されたかどうかの結果をカスタマイズするために使用されます。
解説:
メール処理の結果を変更するフィルターです。送信を省略した後も呼ばれます。Snow Monkey Forms 13.0.0の送信経路では、falseへ変更してもその戻り値だけで完了画面がエラー画面に切り替わるわけではありません。送信を止めたい場合はskipを使ってください。
パラメータ:
$is_sended(boolean): メール処理結果。skipによる省略もtrueで、is_sendedフィルターで変更される場合もあります。配送結果の証明ではありません。$responser(object): フォームの送信結果を含むレスポンサーオブジェクト。$setting(object): フォームの設定情報を含む設定オブジェクト。
// 管理者メールの送信結果をカスタマイズする
add_filter( 'snow_monkey_forms/administrator_mailer/is_sended', function( $is_sended, $responser, $setting ) {
// 特定の条件下で送信失敗として扱う
if ( $responser->get( 'your_custom_field' ) === '特定の値' ) {
$is_sended = false;
}
// 追加の処理を実行
if ( $is_sended ) {
// 送信成功時の処理
} else {
// 送信失敗時の処理
}
return $is_sended;
}, 10, 3 );snow_monkey_forms/administrator_mailer/after_send
このフックは、Snow Monkey Formsプラグインにおいて、管理者宛のメール送信後に実行されるアクションフックです。
解説:
管理者メール処理が例外なく終了した後、追加処理を行うために使います。メールを省略した場合も呼ばれます。
例えば、送信結果をログに記録したり、別の通知処理を実行したりする場合などに便利です。
パラメータ:
$is_sended(boolean): メール処理結果。skipによる省略もtrueで、is_sendedフィルターで変更される場合もあります。配送結果の証明ではありません。$responser(object): フォームの送信結果を含むレスポンサーオブジェクト。$setting(object): フォームの設定情報を含む設定オブジェクト。$mail_parser(object): メール内容の解析を行うMailParserオブジェクト。
// メール処理が例外なく終了した後のフック(配送の証明ではない)。
add_action( 'snow_monkey_forms/administrator_mailer/after_send', function( $is_sended, $responser, $setting, $mail_parser ) {
if ( $is_sended ) {
// skip が true の場合もここへ進む。
error_log( '管理者メール処理が終了しました。' );
} else {
// is_sended フィルターで false に変更した場合など。
error_log( '管理者メール処理結果が false です。' );
}
}, 10, 4 );
Snow Monkey Forms 13.0.0の管理者メール処理では、wp_mailがfalseを返すと例外になり、このフックは呼ばれません。上のelseを送信エラーの監視に使わないでください。また、skipがtrueでも処理結果はtrueです。実際にメールを送ったか、受信先に届いたかはこの引数だけでは判断できません。
snow_monkey_forms/administrator_mailer/headers
このフックは、Snow Monkey Formsプラグインにおいて、管理者宛のメール送信時に使用されるヘッダー情報をカスタマイズするために使用されます。
解説:
フォームの送信が成功し、管理者へのメール送信が行われる際に、メールのヘッダー情報を設定することができます。
このフックを使用することで、ヘッダー情報を動的に変更したり、追加のヘッダーを設定したりすることが可能です。
例えば、追加のCCやBCCを設定したい場合や、特定の条件下でヘッダーを変更したい場合などに便利です。
パラメータ:
$headers(array): メールのヘッダー情報を格納した配列。$responser(object): フォームの送信結果を含むレスポンサーオブジェクト。$setting(object): フォームの設定情報を含む設定オブジェクト。
// 管理者メールのヘッダー情報をカスタマイズする
add_filter( 'snow_monkey_forms/administrator_mailer/headers', function( $headers, $responser, $setting ) {
// CCを追加
$headers[] = 'Cc: example@example.com';
// BCCを追加
$headers[] = 'Bcc: example_bcc@example.com';
return $headers;
}, 10, 3 );snow_monkey_forms/administrator_mailer/args
このフックは、Snow Monkey Formsプラグインにおいて、管理者宛のメール送信時に使用される引数をカスタマイズするために使用されます。
解説:
フォームの送信が成功し、管理者へのメール送信が行われる際に、メールの内容や送信先などを指定する引数を設定します。
このフックを使用することで、引数を動的に変更したり、追加の引数を設定したりすることが可能です。
例えば、送信先のメールアドレスを条件に応じて変更したい場合や、特定の条件下でメールの内容を変更したい場合などに便利です。
パラメータ:
$args(array): メール送信時に使用される引数を格納した配列。$responser(object): フォームの送信結果を含むレスポンサーオブジェクト。$setting(object): フォームの設定情報を含む設定オブジェクト。
// 管理者メールの送信引数をカスタマイズする
add_filter( 'snow_monkey_forms/administrator_mailer/args', function( $args, $responser, $setting ) {
// 送信先メールアドレスを条件に応じて変更
if ( $responser->get( 'your_custom_field' ) === '特定の値' ) {
$args['to'] = 'custom@example.com';
}
// メール本文に追記
$args['body'] .= "\n\n追加のメッセージ";
return $args;
}, 10, 3 );snow_monkey_forms/auto_reply_mailer/skip
このフックは、Snow Monkey Formsプラグインにおいて、自動返信メールの送信をスキップするかどうかを制御するために使用されます。
解説:
フォームの送信が成功した際に、通常は設定された宛先に自動返信メールが送信されます。
しかし、このフックを使用することで、特定の条件下で自動返信メールの送信をスキップすることができます。
例えば、フォームの内容に応じてメール送信を行わない場合や、テスト環境でのメール送信を抑制したい場合などに便利です。
パラメータ:
$skip(boolean): メール送信をスキップするかどうか。デフォルトはfalse(スキップしない)。$responser(object): フォームの送信結果を含むレスポンサーオブジェクト。$setting(object): フォームの設定情報を含む設定オブジェクト。
// 特定の条件下で自動返信メールの送信をスキップする
add_filter( 'snow_monkey_forms/auto_reply_mailer/skip', function( $skip, $responser, $setting ) {
// フォームの入力値に応じて送信をスキップ
if ( $responser->get( 'your_custom_field' ) === '特定の値' ) {
$skip = true;
}
return $skip;
}, 10, 3 );snow_monkey_forms/auto_reply_mailer/is_sended
このフックは、Snow Monkey Formsプラグインにおいて、自動返信メールが送信されたかどうかの結果をカスタマイズするために使用されます。
解説:
メール処理の結果を変更するフィルターです。送信を省略した後も呼ばれます。Snow Monkey Forms 13.0.0の送信経路では、falseへ変更してもその戻り値だけで完了画面がエラー画面に切り替わるわけではありません。送信を止めたい場合はskipを使ってください。
処理結果に応じた追加処理に利用します。falseを返す操作で、すでに行われたメール送信を取り消すことはできません。
パラメータ:
$is_sended(boolean): メール処理結果。skipによる省略もtrueで、is_sendedフィルターで変更される場合もあります。配送結果の証明ではありません。$responser(object): フォームの送信結果を含むレスポンサーオブジェクト。$setting(object): フォームの設定情報を含む設定オブジェクト。
// 自動返信メールの送信結果をカスタマイズする
add_filter( 'snow_monkey_forms/auto_reply_mailer/is_sended', function( $is_sended, $responser, $setting ) {
// 特定の条件下で送信失敗として扱う
if ( $responser->get( 'your_custom_field' ) === '特定の値' ) {
$is_sended = false;
}
// 追加の処理を実行
if ( $is_sended ) {
// 送信成功時の処理
} else {
// 送信失敗時の処理
}
return $is_sended;
}, 10, 3 );snow_monkey_forms/auto_reply_mailer/after_send
このフックは、Snow Monkey Formsプラグインにおいて、自動返信メール送信後に実行されるアクションフックです。
解説:
自動返信メール処理が例外なく終了した後、追加処理を行うために使います。メールを省略した場合も呼ばれます。
例えば、送信結果をログに記録したり、別の通知処理を実行したりする場合などに便利です。
パラメータ:
$is_sended(boolean): メール処理結果。skipによる省略もtrueで、is_sendedフィルターで変更される場合もあります。配送結果の証明ではありません。$responser(object): フォームの送信結果を含むレスポンサーオブジェクト。$setting(object): フォームの設定情報を含む設定オブジェクト。$mail_parser(object): メール内容の解析を行うMailParserオブジェクト。
// メール処理が例外なく終了した後のフック(配送の証明ではない)。
add_action( 'snow_monkey_forms/auto_reply_mailer/after_send', function( $is_sended, $responser, $setting, $mail_parser ) {
if ( $is_sended ) {
// skip が true の場合もここへ進む。
error_log( '自動返信メール処理が終了しました。' );
} else {
// is_sended フィルターで false に変更した場合など。
error_log( '自動返信メール処理結果が false です。' );
}
}, 10, 4 );
Snow Monkey Forms 13.0.0の自動返信メール処理では、wp_mailがfalseを返すと例外になり、このフックは呼ばれません。上のelseを送信エラーの監視に使わないでください。また、skipがtrueでも処理結果はtrueです。実際にメールを送ったか、受信先に届いたかはこの引数だけでは判断できません。
snow_monkey_forms/auto_reply_mailer/headers
このフックは、Snow Monkey Formsプラグインにおいて、自動返信メール送信時に使用されるヘッダー情報をカスタマイズするために使用されます。
解説:
フォームの送信が成功し、自動返信メールの送信が行われる際に、メールのヘッダー情報を設定することができます。
このフックを使用することで、ヘッダー情報を動的に変更したり、追加のヘッダーを設定したりすることが可能です。
例えば、追加のCCやBCCを設定したい場合や、特定の条件下でヘッダーを変更したい場合などに便利です。
パラメータ:
$headers(array): メールのヘッダー情報を格納した配列。$responser(object): フォームの送信結果を含むレスポンサーオブジェクト。$setting(object): フォームの設定情報を含む設定オブジェクト。
// 自動返信メールのヘッダー情報をカスタマイズする
add_filter( 'snow_monkey_forms/auto_reply_mailer/headers', function( $headers, $responser, $setting ) {
// CCを追加
$headers[] = 'Cc: example@example.com';
// BCCを追加
$headers[] = 'Bcc: example_bcc@example.com';
return $headers;
}, 10, 3 );snow_monkey_forms/auto_reply_mailer/args
このフックは、Snow Monkey Formsプラグインにおいて、自動返信メール送信時に使用される引数をカスタマイズするために使用されます。
解説:
フォームの送信が成功し、自動返信メールの送信が行われる際に、メールの内容や送信先などを指定する引数を設定します。
このフックを使用することで、引数を動的に変更したり、追加の引数を設定したりすることが可能です。
例えば、送信先のメールアドレスを条件に応じて変更したい場合や、特定の条件下でメールの内容を変更したい場合などに便利です。
パラメータ:
$args(array): メール送信時に使用される引数を格納した配列。$responser(object): フォームの送信結果を含むレスポンサーオブジェクト。$setting(object): フォームの設定情報を含む設定オブジェクト。
// 自動返信メールの送信引数をカスタマイズする
add_filter( 'snow_monkey_forms/auto_reply_mailer/args', function( $args, $responser, $setting ) {
// 送信先メールアドレスを条件に応じて変更
if ( $responser->get( 'your_custom_field' ) === '特定の値' ) {
$args['to'] = 'custom@example.com';
}
// メール本文に追記
$args['body'] .= "\n\n追加のメッセージ";
return $args;
}, 10, 3 );snow_monkey_forms/saved_files/survival_time
このフックは、通常清掃で添付ファイルを削除対象にするまでの時間を秒単位で変更します。
保存後30分間の保持を保証する設定ではありません。
解説:
フォーム送信時にユーザーが添付したファイルは、サーバー上の特定のディレクトリに一時的に保存されます。
Snow Monkey Forms 13.0.0ではファイルの最終更新時刻と現在時刻を比較し、設定時間を超えたファイルを通常清掃の削除対象にします。
時間が来た瞬間に削除するタイマーではありません。
既定値は15分(900秒)です。
下の例では通常清掃の期限を30分(1800秒)に変更しますが、送信完了処理は強制清掃を使うため、期限前でも対象ディレクトリのファイルを削除します。
パラメータ:
$survival_time(int): ファイルが保存される期間(秒単位)。
// ファイルの保存期間を30分に設定する
add_filter( 'snow_monkey_forms/saved_files/survival_time', function( $survival_time ) {
return 60 * 30; // 30分
} );snow_monkey_forms/mailer/headers
このフックは、Snow Monkey Formsプラグインにおいて、メール送信時に使用されるヘッダー情報をカスタマイズするために使用されます。
解説:
フォームの送信が成功し、メール送信が行われる際に、メールのヘッダー情報を設定することができます。
このフックを使用することで、ヘッダー情報を動的に変更したり、追加のヘッダーを設定したりすることが可能です。
例えば、追加のCCやBCCを設定したい場合や、特定の条件下でヘッダーを変更したい場合などに便利です。
パラメータ:
$headers(array): メールのヘッダー情報を格納した配列。
// メールのヘッダー情報をカスタマイズする
add_filter( 'snow_monkey_forms/mailer/headers', function( $headers ) {
// CCを追加
$headers[] = 'Cc: example@example.com';
// BCCを追加
$headers[] = 'Bcc: example_bcc@example.com';
return $headers;
} );snow_monkey_forms/custom_mail_tag
このフックは、Snow Monkey Formsプラグインにおいて、メール本文内のカスタムタグをカスタマイズするために使用されます。
解説:
フォームの送信が成功し、メール送信が行われる際に、メール本文内にはフォームの入力値を埋め込むためのタグ(例: {name})が使用されます。
このフックを使用することで、カスタムタグの値を動的に変更したり、追加の処理を行ったりすることが可能です。
例えば、特定のフィールドの値を加工してメールに埋め込みたい場合などに便利です。
パラメータ:
$value(mixed): カスタムタグの値。$tag(string): カスタムタグの名前(フィールド名)。$responser(Responser): フォームの送信結果を含むレスポンサーオブジェクト。$setting(Setting): フォームの設定情報を含む設定オブジェクト。
// カスタムタグの値をカスタマイズする
add_filter( 'snow_monkey_forms/custom_mail_tag', function( $value, $tag, $responser, $setting ) {
// 特定のフィールドの値を加工する
if ( 'your_custom_field' === $tag && is_string( $value ) ) {
$value = strtoupper( $value ); // 値を大文字に変換
}
return $value;
}, 10, 4 );snow_monkey_forms/control/attributes
このフックは、Snow Monkey Formsプラグインにおいて、フォームコントロール(入力フィールド)の属性をカスタマイズするために使用されます。
解説:
フォームの入力フィールドやボタンなどのコントロールは、様々な属性(例: name、class、value など)を持っています。
このフックを使用することで、コントロールの属性を動的に変更したり、追加の属性を設定したりすることが可能です。
例えば、特定のフィールドにカスタムクラスを追加したい場合や、属性の値を条件に応じて変更したい場合などに便利です。
パラメータ:
$attributes(array): コントロールの属性を格納した連想配列。$setting(Setting): フォームの設定情報を含む設定オブジェクト。
// 特定のフィールドにカスタムクラスを追加する
add_filter( 'snow_monkey_forms/control/attributes', function( $attributes, $setting ) {
if ( 'your_custom_field' === ( $attributes['name'] ?? '' ) ) {
// 'class' 属性が存在しない場合は、空の文字列を設定
if ( ! isset( $attributes['class'] ) ) {
$attributes['class'] = '';
}
// カスタムクラスを追加
$attributes['class'] .= ' custom-class';
}
return $attributes;
}, 10, 2 );snow_monkey_forms/checkboxes/options
このフックは、Snow Monkey Formsプラグインにおいて、チェックボックスコントロールのオプションをカスタマイズするために使用されます。
解説:
フォームにチェックボックスを設置する際に、選択肢(オプション)を設定します。
このフックを使用することで、チェックボックスのオプションを動的に変更したり、追加のオプションを設定したりすることが可能です。
例えば、データベースから取得した値をオプションとして設定したい場合や、特定の条件下でオプションを変更したい場合などに便利です。
パラメータ:
$options(array): チェックボックスのオプションを格納した配列。$name(string): チェックボックスコントロールの名前(name属性の値)。$setting(Setting): フォームの設定情報を含む設定オブジェクト。
// チェックボックスのオプションをカスタマイズする
add_filter( 'snow_monkey_forms/checkboxes/options', function( $options, $name, $setting ) {
// 特定のチェックボックスに対してオプションを設定
if ( 'your_checkbox_field' === $name ) {
$options = array(
'option1' => 'Option 1',
'option2' => 'Option 2',
'option3' => 'Option 3',
);
}
return $options;
}, 10, 3 );snow_monkey_forms/select/options
このフックは、Snow Monkey Formsプラグインにおいて、セレクトボックスコントロールのオプションをカスタマイズするために使用されます。
解説:
フォームにセレクトボックス(ドロップダウンメニュー)を設置する際に、選択肢(オプション)を設定します。
このフックを使用することで、セレクトボックスのオプションを動的に変更したり、追加のオプションを設定したりすることが可能です。
例えば、データベースから取得した値をオプションとして設定したい場合や、特定の条件下でオプションを変更したい場合などに便利です。
パラメータ:
$options(array): セレクトボックスのオプションを格納した配列。$name(string): セレクトボックスコントロールの名前(name属性の値)。$setting(Setting): フォームの設定情報を含む設定オブジェクト。
// セレクトボックスのオプションをカスタマイズする
add_filter( 'snow_monkey_forms/select/options', function( $options, $name, $setting ) {
// 特定のセレクトボックスに対してオプションを設定
if ( 'your_select_field' === $name ) {
$options = array(
'value1' => 'Option 1',
'value2' => 'Option 2',
'value3' => 'Option 3',
);
}
return $options;
}, 10, 3 );snow_monkey_forms/radio_buttons/options
このフックは、Snow Monkey Formsプラグインにおいて、ラジオボタンコントロールのオプションをカスタマイズするために使用されます。
解説:
フォームにラジオボタンを設置する際に、選択肢(オプション)を設定します。このフックを使用することで、ラジオボタンのオプションを動的に変更したり、追加のオプションを設定したりすることが可能です。
例えば、データベースから取得した値をオプションとして設定したい場合や、特定の条件下でオプションを変更したい場合などに便利です。
パラメータ:
$options(array): ラジオボタンのオプションを格納した配列。$name(string): ラジオボタンコントロールの名前(name属性の値)。$setting(Setting): フォームの設定情報を含む設定オブジェクト。
// ラジオボタンのオプションをカスタマイズする
add_filter( 'snow_monkey_forms/radio_buttons/options', function( $options, $name, $setting ) {
// 特定のラジオボタンに対してオプションを設定
if ( 'your_radio_field' === $name ) {
$options = array(
'option1' => 'Option 1',
'option2' => 'Option 2',
'option3' => 'Option 3',
);
}
return $options;
}, 10, 3 );snow_monkey_forms/validator/error_message
このフックは、Snow Monkey Formsプラグインにおいて、フォームのバリデーションエラーメッセージをカスタマイズするために使用されます。
解説:
フォームの入力値がバリデーション(検証)に失敗した際に表示されるエラーメッセージをカスタマイズすることができます。
特定のフィールドやバリデーションルールに応じて、エラーメッセージを変更したい場合に便利です。
パラメータ:
$message(string): デフォルトのエラーメッセージ。$validation_name(string): バリデーションルールの名前。$name(string): フォームフィールドの名前(name属性の値)。
// バリデーションエラーメッセージをカスタマイズする
add_filter( 'snow_monkey_forms/validator/error_message', function( $message, $validation_name, $name ) {
// 特定のフィールドの特定のバリデーションルールに対するエラーメッセージを変更
if ( 'your_field_name' === $name && 'required' === $validation_name ) {
$message = 'このフィールドは必須です。';
}
return $message;
}, 10, 3 );snow_monkey_forms/spam/validate
このフックは、Snow Monkey Formsプラグインにおいて、フォームのスパム検証を行うために使用されます。
解説:
フォームが送信されたときに、その内容がスパムであるかどうかを検証するために使用されます。このフックを利用して、独自のスパム検証ロジックを実装することができます。
add_filter( 'snow_monkey_forms/spam/validate', function ( $valid, $responser, $setting ) {
if ( is_wp_error( $valid ) || ! $valid ) {
return $valid;
}
$message = $responser->get( 'message' );
if ( is_string( $message ) && strpos( $message, 'spam_keyword' ) !== false ) {
return false;
}
return $valid;
}, 10, 3 );snow_monkey_forms/form/append
このフックは、Snow Monkey Formsプラグインにおいて、フォームの末尾に追加のフィールドやコンテンツを挿入するために使用されます。
解説:
フォームの最後にカスタムフィールドやHTMLコンテンツを追加したい場合に利用します。
たとえば、Google reCAPTCHAのトークンフィールドを挿入するために使用されています。
// フォームの末尾にカスタムテキストを追加する
add_action( 'snow_monkey_forms/form/append', function() {
echo '<p>カスタムテキストをここに追加</p>';
} );snow_monkey_forms/enqueue/fallback_style
このフックは、Snow Monkey Formsプラグインにおいて、フォームのスタイルが読み込まれるかどうかを制御するために使用されます。
解説:
Snow Monkey Formsプラグインは、デフォルトでフォームのスタイルを提供しています。
しかし、Snow Monkeyテーマを使用している場合は、テーマ側でフォームのスタイルが提供されているため、プラグインのスタイルは不要になります。
このフックを使用することで、プラグインのフォールバックスタイルの読み込みを制御することができます。
// Snow Monkeyテーマを使用している場合、フォームのフォールバックスタイルを読み込まない
add_filter( 'snow_monkey_forms/enqueue/fallback_style', '__return_false' );保存ファイルの期限と清掃の違い
| 条件 | SMF 13.0.0で確認した結果 |
|---|---|
| 既定15分・最終更新から20分 | 通常清掃の削除対象 |
| 掲載例の30分・最終更新から20分 | 通常清掃では残る |
| 掲載例の30分・最終更新から31分 | 通常清掃で削除 |
| 掲載例の30分・強制清掃 | 20分のファイルも削除 |
2026年10月3日、隔離環境の検証専用ファイルで更新時刻を調整し、SMFのDirectoryクラスによる期限判定と削除処理を実行しました。
実ファイルを30分待って測定した結果ではありません。
添付ファイルを送信後も保管したい用途は、このフックだけでは実現できません。
別の保存先と保存期間を設計し、送信完了後にも必要なファイルが残るかを確認してください。
メールを止める設定と処理結果を変える設定
| フック・条件 | wp_mailの呼び出し | 実プラグインの結果 |
|---|---|---|
| skipがtrue | 呼ばれない | 処理結果はtrue、after_sendにもtrue |
| is_sendedでfalseへ変更 | 既に呼ばれた後 | 処理結果はfalse、after_sendにもfalse |
| wp_mailがfalseを返す | 1回呼ばれる | 例外になり、after_sendは呼ばれない |
| headers・argsで変更 | 変更した宛先・本文・ヘッダーで呼ばれる | 宛先への到達確認は別途必要 |
2026年10月3日、SMF 13.0.0の管理者メールと自動返信メールを各フック例で比較し、両方のMailerクラスからwp_mailへ渡る値と処理結果を確認しました。
メールは配送前に捕捉し、成功・失敗の戻り値を切り替えています。
送信自体を止めたい条件にはskipを使います。
is_sendedをfalseへ変えても、既に行われた送信を取り消せません。
after_sendのtrueも、受信者がメールを受け取った証明にはなりません。
管理者用と自動返信用のargs例は、対象値が一致すると宛先を変え、どちらの入力でも本文を追記します。
例のメールアドレスとyour_custom_field、特定の値を運用に合わせて変更し、意図しない宛先や同報先が追加されていないか確認してください。
共通のmailer/headers例は、管理者メールにも自動返信メールにも適用されます。
個別のheaders例と同時に追加すると同じCC・BCCを重ね得るため、必要な例だけを選びます。
実フォームでフックを選んで確認する
掲載例を一括で有効にせず、使いたいフックを1つ選んで項目のNAMEと条件値を実際の設定へ合わせます。
2026年10月2日、WordPress 7.1.2・SWELL 2.19.0・SMF 13.0.0の隔離環境で、通常のCSRF検証を使った実HTTP通信を確認しました。
選択肢の3例では、確認画面にOption 2・Option 3・Option 2を表示し、生成メールでは対応する値 value2・option3・option2 を確認しました。
カスタムタグの例では入力値abcが生成メールでABCとなり、属性の例では対象の入力欄に custom-class が付きました。
必須エラーの例は未入力時の文言を変え、スパム判定の例は spam_keyword を含む入力をsystemerrorで拒否しました。
管理者メールのskip例は実メール処理へ進まずにcompleteとなり、after_sendへ渡る結果はtrueでした。
is_sended例で結果をfalseにした場合も画面はcompleteとなり、after_sendにはfalseが渡りました。
処理結果の真偽だけでメール到達を判断せず、導入先のテスト受信と照合してください。
今回のメールは配送前に捕捉しています。
2026年10月3日には保存ファイルの通常清掃と強制清掃を実プラグインで追加検証しました。
実メールの到達、外部スパムサービス、全23例の運用は未検証です。

まとめ
Contact Form 7やMW WP Formはネットに知見があり、いろいろなカスタマイズができますが、
ブロックエディタ対応のSnow Monkey Formsは便利で使いやすいものの、まだまだ知見が足りません。
今後カスタマイズする中で情報を追記したいと思います。
この記事で紹介しているコードは、GitHubのMOTOKI-LLC/WAZA-codeにもまとめています。
スパム判定例のmessageは入力項目のname、spam_keywordは拒否したい文字列へ変更します。既存のfalseやWP_Errorを維持し、別の検証で拒否された送信を許可へ戻しません。この例は文字列の一致判定だけで、スパム対策全体を置き換えるものではありません。
コードは必要なフックだけを子テーマのfunctions.phpまたはCode Snippetsの一方へ追加します。元へ戻す場合は追加したコールバックを削除または無効化します。今回確認したのはエラーメッセージとスパム判定の例です。全23例の送信・画面動作を一括で検証したものではありません。根拠:開発元のソースコード。
選択肢の3例(select・checkboxes・radio_buttons)は「送信値 => 表示ラベル」の配列を返します。nameが一致しない項目は元の選択肢を維持します。掲載例の3項目について、開発元のControlクラスでHTMLを生成するところまで確認しました。ブラウザーでの選択操作やメール到達は別の検証です。カスタムメールタグの大文字変換例は文字列だけを加工し、配列などはそのまま返します。



