WordPress: Contact Form 7 のフィールドから値を得る

Contact Form 7 3.9 beta 以降であれば、wpcf7_before_send_mail アクションのコールバックのなかで WPCF7_Submission のインスタンスからフィールドの値を得ることができる。次のコードはフォームを送信する直前にフォームに割り当てられた id と your-name フィールドの値をテキストファイルに保存する。

add_action( 'wpcf7_before_send_mail', function($contact_form) {

    $submission = WPCF7_Submission::get_instance();
 
    if ( $submission ) {
        $data = $submission->get_posted_data();
    }
    $content = $contact_form->id().' ';
    $content .= isset($data['your-name']) ? $data['your-name'] : 'nothing';
    $path = '/path/to/test.txt';
    file_put_contents( $path, $content );
} );

メールの送信を無効にするには set_properties メソッドで skip_mail プロパティの値に true を指定する。

add_action( 'wpcf7_before_send_mail', function($contact_form) {

    $contact_form->set_properties( [ 'skip_mail' => true ] );

    $submission = WPCF7_Submission::get_instance();

    if ( $submission ) {
        $name = $submission->get_posted_data('your-name');
    }

    $path = '/path/to/test.txt';
    file_put_contents($path, $name);
} );