プラグインContact Form 7のwpcf7_mail_componentsフィルタの使用方法・解説

概要

wpcf7_mail_components フィルタは、WordPress の Contact Form 7 プラグインで使用されるフィルタです。このフィルタは、送信するメールの内容を加工するために利用されます。具体的には、ユーザーから送られてきたデータを基に、送信されるメールの件名、本文、宛先、ヘッダーなどを変更することができます。

よく使われる機能の例は以下の通りです:
1. メールの件名を動的に変更する
2. メール本文にカスタムメッセージを追加する
3. 特定の条件に応じて宛先を変更する
4. スパムフィルターを回避するためのヘッダー追加
5. メールフォーマットをカスタマイズする
6. 送信される添付ファイルの管理

このフィルタは、Contact Form 7 プラグインのバージョン 5.0 以上、そして WordPress バージョン 4.7 以上で使用可能です。

構文

add_filter( 'wpcf7_mail_components', 'your_function_name', 10, 3 );

パラメータ

  • mail_components: メールのコンポーネント情報を含む配列
  • form: 現在処理中のフォームのインスタンス
  • submission: 現在の送信情報

戻り値

  • 加工されたメールのコンポーネント情報を含む配列

サンプルコード

サンプルコード1: 件名を動的に変更する

add_filter( 'wpcf7_mail_components', 'custom_mail_subject', 10, 3 );
function custom_mail_subject( $components, $form, $submission ) {
    $components['subject'] = '新しいお問い合わせ: ' . $submission->get_posted_data()['your-subject-field'];
    return $components;
}

このコードは、フォームの送信データに基づいてメールの件名を変更します。投稿フィールドから件名を取得し、追加しています。
(引用元: https://contactform7.com/)

サンプルコード2: 本文にカスタムメッセージを追加する

add_filter( 'wpcf7_mail_components', 'add_custom_message_to_body', 10, 3 );
function add_custom_message_to_body( $components, $form, $submission ) {
    $components['body'] .= "nn追加メッセージ: お問い合わせありがとうございます!";
    return $components;
}

このコードは、メール本文の最後にカスタムメッセージを追加します。
(引用元: https://contactform7.com/)

サンプルコード3: 特定の条件に応じて宛先を変更する

add_filter( 'wpcf7_mail_components', 'conditional_recipient', 10, 3 );
function conditional_recipient( $components, $form, $submission ) {
    $data = $submission->get_posted_data();
    if ( $data['your-checkbox-field'] ) {
        $components['recipient'] = 'example@domain.com';
    }
    return $components;
}

このコードは、チェックボックスの状態により宛先を変更します。
(引用元: https://contactform7.com/)

サンプルコード4: スパムフィルターを回避するためのヘッダー追加

add_filter( 'wpcf7_mail_components', 'add_custom_headers', 10, 3 );
function add_custom_headers( $components, $form, $submission ) {
    $components['headers'] .= "X-Mailer: PHP/" . phpversion() . "rn";
    return $components;
}

このコードは、PHPバージョン情報を含むカスタムヘッダーを追加します。
(引用元: https://contactform7.com/)

サンプルコード5: 添付ファイルの管理

add_filter( 'wpcf7_mail_components', 'manage_attachments', 10, 3 );
function manage_attachments( $components, $form, $submission ) {
    $components['attachments'] = array('path/to/your/file.pdf');
    return $components;
}

このコードは、送信されるメールに特定のファイルを添付します。
(引用元: https://contactform7.com/)

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

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

この表は wpcf7_mail_components フィルタが上記のアクションでどのように使用されるかを示しています。具体的な使用例はありませんが、フィルタの柔軟性は実際の開発で大いに役立ちます。

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


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