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