contactform7でメール送信内容を強制的に変更する

contactform7でメール送信内容に追加したり、引いたりしたい場合があるかと思います。

今回なそんな場面に遭遇しましたのでhook方法を考えてみました。

 

まずは、「wpcf7_before_send_mail」でhookを掛ける

function.php

add_action("wpcf7_before_send_mail", "wpcf7_do_something");

function wpcf7_do_something($WPCF7_ContactForm)
{

~~~ ここに処理内容 ~~~
 return $wpcf7;
}

 

これでまずはメール送信時のフックが完成!!

 

じゃあ、何をどうしてっていうところで例えばメール本文を置き換える場合は

add_action("wpcf7_before_send_mail", "wpcf7_do_something");

function wpcf7_do_something($WPCF7_ContactForm)
{
    if($WPCF7_ContactForm->id() == コンタクトフォームのID)
    {
        $wpcf7      = WPCF7_ContactForm::get_current();//wpcf7で設定したデータを取得する
        $submission = WPCF7_Submission::get_instance();

        if ($submission) {
            $data = $submission->get_posted_data();//ここでPOSTされたデータを取得する

       //メールの本文を置き換える場合:例
              $mail         = $wpcf7->prop('mail');//メール送信部分を取得
              $mail['body'] ="おきたかえた本文";//本文の置き換えの文章

       ↓で置き換える
              $wpcf7->set_properties(array(
                    "mail" => $mail                
              ));

        }
    return $wpcf7;
     }
}

ってな感じで変更することができる。なので動的に変更しなければならない場合に役立つ。