プラグインContact Form 7のwpcf7_before_send_mailアクションの使用方法・解説

概要

wpcf7_before_send_mailは、Contact Form 7プラグインにおける重要なフックであり、メール送信前に特定の処理を実行できる機能を提供します。このアクションは、以下のような機能を実装する際によく使用されます。

  1. メールの内容を変更する
  2. 送信されたデータを検証する
  3. 特定の条件に基づいてメールを送信しないようにする
  4. メールの送信先アドレスを動的に変更する
  5. カスタムロギングを行う
  6. 外部APIを呼び出す

このアクションは、Contact Form 7のバージョン5.0以降およびWordPressのバージョン4.8以降で使用可能です。

構文

add_action('wpcf7_before_send_mail', 'your_custom_function');

パラメータ

  • $contact_form: 送信されたコンタクトフォームオブジェクト
  • $form_data: フォームデータの配列

戻り値

このアクションは何も返しません。

サンプルコード1

add_action('wpcf7_before_send_mail', 'customize_email_content');
function customize_email_content($contact_form) {
    $props = $contact_form->get_properties();
    $props['mail']['body'] .= "nnThank you for your submission!";
    $contact_form->set_properties($props);
}

このコードは、メールの本文に「Thank you for your submission!」というメッセージを追加します。

サンプルコード2

add_action('wpcf7_before_send_mail', 'validate_form_submission');
function validate_form_submission($contact_form) {
    $data = $contact_form->get_posted_data();
    if (empty($data['email'])) {
        // メールアドレスが空の場合、送信しない
        add_filter('wpcf7_mail_sent', '__return_false');
    }
}

このコードは、メールアドレスが空である場合に送信を停止します。

サンプルコード3

add_action('wpcf7_before_send_mail', 'log_submission');
function log_submission($contact_form) {
    $data = $contact_form->get_posted_data();
    error_log(print_r($data, true));
}

このコードは、フォームデータをエラーログに記録します。

サンプルコード4

add_action('wpcf7_before_send_mail', 'change_recipient_email');
function change_recipient_email($contact_form) {
    $mail = $contact_form->prop('mail');
    $mail['to'] = 'newrecipient@example.com';
    $contact_form->set_properties(['mail' => $mail]);
}

このコードは、メールの送信先を新しいアドレスに変更します。

サンプルコード5

add_action('wpcf7_before_send_mail', 'send_data_to_api');
function send_data_to_api($contact_form) {
    $data = $contact_form->get_posted_data();
    $response = wp_remote_post('https://example.com/api', [
        'body' => $data,
    ]);
}

このコードは、送信されたデータを外部APIに送信します。

この関数のアクションでの使用可能性

アクション 使用可能性
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

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


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