概要
wpcf7_before_send_mail
は、Contact Form 7プラグインにおける重要なフックであり、メール送信前に特定の処理を実行できる機能を提供します。このアクションは、以下のような機能を実装する際によく使用されます。
- メールの内容を変更する
- 送信されたデータを検証する
- 特定の条件に基づいてメールを送信しないようにする
- メールの送信先アドレスを動的に変更する
- カスタムロギングを行う
- 外部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 |