概要
wpcf7_recaptcha_actions
は、WordPressのプラグインContact Form 7において、GoogleのreCAPTCHAを利用する際に使用されるアクションフックです。このアクションを利用することで、フォームの送信時にreCAPTCHAの検証を行ったり、カスタムロジックを実装したりできます。具体的には以下のような機能を実装するのによく使われます:
- reCAPTCHAの検証結果をカスタマイズする
- エラーメッセージを変更する
- reCAPTCHAの設定を動的に変更する
- フォーム送信時の追加処理を実行する
- reCAPTCHAのスコアを元に条件分岐を行う
- 送信データのログを記録する
構文
add_action('wpcf7_recaptcha_actions', 'my_custom_recaptcha_action', 10, 2);
パラメータ
$submission
: フォーム送信情報を含むオブジェクト$form
: 現在のフォームデータを含むオブジェクト
戻り値
このアクションの戻り値は特にありませんが、関数の中で特定の操作を実行することが可能です。
対応バージョン
- Contact Form 7のバージョン: 5.0 以降
- WordPressのバージョン: 5.0 以降
サンプルコード
サンプルコード1: reCAPTCHAの検証結果をカスタマイズ
このコードでは、reCAPTCHAの検証が失敗した場合に、カスタムメッセージを表示します。
add_action('wpcf7_recaptcha_actions', 'custom_recaptcha_error_message', 10, 2);
function custom_recaptcha_error_message($submission, $form) {
if (!$submission->get_posted_data('g-recaptcha-response')) {
$submission->set_validation_error('recaptcha', 'reCAPTCHAの検証に失敗しました。');
}
}
サンプルコード2: reCAPTCHAのスコアに基づく条件分岐
reCAPTCHAが取得したスコアに基づいて、特定のアクションを実行します。
add_action('wpcf7_recaptcha_actions', 'check_recaptcha_score', 10, 2);
function check_recaptcha_score($submission, $form) {
$score = get_recaptcha_score($submission);
if ($score < 0.5) {
// スコアが低いため、送信を拒否
$submission->set_validation_error('recaptcha', '低リスクのユーザーと見なされませんでした。');
}
}
サンプルコード3: フォーム送信時の追加処理
フォームが正常に送信された際に、追加の処理を実行します。
add_action('wpcf7_recaptcha_actions', 'additional_submission_process', 10, 2);
function additional_submission_process($submission, $form) {
// ここに追加の処理を記述
log_submission_data($submission->get_posted_data());
}
サンプルコード4: エラーメッセージのカスタマイズ
特定の条件を満たす際にエラーメッセージを変更します。
add_action('wpcf7_recaptcha_actions', 'custom_error_message_based_on_conditions', 10, 2);
function custom_error_message_based_on_conditions($submission, $form) {
// 特定の条件に基づいてエラーメッセージを変更
if (some_condition()) {
$submission->set_validation_error('recaptcha', 'カスタムエラーメッセージが表示されました。');
}
}
サンプルコード5: 登録データのログを記録
reCAPTCHAの成功時に送信データをログに記録します。
add_action('wpcf7_recaptcha_actions', 'log_recaptcha_success', 10, 2);
function log_recaptcha_success($submission, $form) {
if ($submission->get_posted_data('g-recaptcha-response')) {
log_user_data($submission->get_posted_data());
}
}
この関数のアクションでの使用可能性
アクション名 | 使用可能 |
---|---|
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 |