ContactForm7でフィルターフックの使い方

Contact Form 7には、フィルターフックを使用するための機能が用意されています。以下の手順に従って、Contact Form 7でフィルターフックを使用することができます。

フィルターフックを定義する
Contact Form 7でフィルターフックを使用する場合は、wpcf7_before_send_mailというフックを使用します。このフックは、メールが送信される前に、送信するメール本文を変更することができます。
以下のようなコードを、functions.phpなどのファイルに追加して、wpcf7_before_send_mailフックを定義します。

add_filter('wpcf7_before_send_mail', 'custom_wpcf7_before_send_mail');

function custom_wpcf7_before_send_mail($wpcf7_data) {
    // ここでメール本文の変更処理を実行する
    $mail = $wpcf7_data->prop('mail');
    $mail['body'] = str_replace('[your-name]', 'Dear [your-name],', $mail['body']);
    $wpcf7_data->set_properties(array('mail' => $mail));
    return $wpcf7_data;
}

上記の例では、wpcf7_before_send_mailフックにフックするためのadd_filter関数で、custom_wpcf7_before_send_mailという関数を指定しています。この関数内で、メール本文を変更する処理を実行しています。

変更したいメール本文を指定する
上記の例では、$mail[‘body’]を使用して、メール本文を変更しています。この例では、[your-name]というフィールドに入力された値を、Dear [your-name],に置換する処理を実行しています。

変更したいメール本文にフィルターフックを適用する
上記の例では、str_replace関数を使用して、メール本文のテキストを変更しています。このように、PHPの文字列関数や正規表現関数を使用して、メール本文を変更することができます。

上記の例では、$mail[‘body’]に対して直接フィルターフックを適用していますが、他のプロパティにもフィルターフックを適用することができます。例えば、$mail[‘subject’]に対してフィルターフックを適用して、メールの件名を変更することもできます。

以上の手順で、Contact Form 7でフィルターフックを使用することができます。