• 解決済 creator777

    (@creator777)


    コンタクトフォーム7のカスタマイズのことで、教えてください。

    自動返信を使うときは、メールのタグの下の方にあるメール2のチェックボックスにチェックすると使えるのは、理解しています。
    これをプログラムで、制御したいのです。

    お客様への自動返信をある/なしを、プログラムで選択できるようにしたいです。

    メールフォームにスイッチをつけて、その値で自動返信する、しないを選択できるようにしたいです。

    下記のフック?を見つけました。
    でも、使い方が分からないのです。

    自動返信自体をスキップする方法は、見つけました。
    でも今回は、メール2のみを送ってほしい人と、不要な人で使い分けができるようにしたいのです。

    ご教授いただけましたら、幸いです。
    何卒よろしくお願いします。

    
    

    function wpcf7_save_contact_form( $args = ”, $context = ‘save’ ) {
    $args = wp_parse_args( $args, array(
    ‘id’ => -1,
    ‘title’ => null,
    ‘locale’ => null,
    ‘form’ => null,
    ‘mail’ => null,
    ‘mail_2’ => null,
    ‘messages’ => null,
    ‘additional_settings’ => null,
    ) );

    $args = wp_unslash( $args );

    $args[‘id’] = (int) $args[‘id’];

    if ( -1 == $args[‘id’] ) {
    $contact_form = WPCF7_ContactForm::get_template();
    } else {
    $contact_form = wpcf7_contact_form( $args[‘id’] );
    }

    if ( empty( $contact_form ) ) {
    return false;
    }

    if ( null !== $args[‘title’] ) {
    $contact_form->set_title( $args[‘title’] );
    }

    if ( null !== $args[‘locale’] ) {
    $contact_form->set_locale( $args[‘locale’] );
    }

    $properties = array();

    if ( null !== $args[‘form’] ) {
    $properties[‘form’] = wpcf7_sanitize_form( $args[‘form’] );
    }

    if ( null !== $args[‘mail’] ) {
    $properties[‘mail’] = wpcf7_sanitize_mail( $args[‘mail’] );
    $properties[‘mail’][‘active’] = true;
    }

    if ( null !== $args[‘mail_2’] ) {
    $properties[‘mail_2’] = wpcf7_sanitize_mail( $args[‘mail_2’] );
    }

    if ( null !== $args[‘messages’] ) {
    $properties[‘messages’] = wpcf7_sanitize_messages( $args[‘messages’] );
    }

    if ( null !== $args[‘additional_settings’] ) {
    $properties[‘additional_settings’] = wpcf7_sanitize_additional_settings(
    $args[‘additional_settings’]
    );
    }

    $contact_form->set_properties( $properties );

    do_action( ‘wpcf7_save_contact_form’, $contact_form, $args, $context );

    if ( ‘save’ == $context ) {
    $contact_form->save();
    }

    return $contact_form;
    }`

    `

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • @creator777 さん

    こんにちは。

    メール送信をスキップするかどうかをフィルタする wpcf7_skip_mail というフックがあります。

    function my_skip_mail( $skip_mail, $contact_form ) {
      if ( /* ここに条件文 */ ) {
        // trueを返すとメールを送信しない
        return true;
      }
      return $skip_mail;
    }
    add_filter( 'wpcf7_skip_mail','my_skip_mail', 10, 2 );

    未確認ですが、$contact_form にフォームデータ等が格納されるはずですので、そのデータをもとにメール送信をスキップするかどうかを変更すればよいと思います。

    こんにちは

    wpcf7_skip_mailを使ってしまうと、メール1もメール2も両方スキップしてしまいます。
    wpcf7_additional_mailを使った方が良いのではと思います。
    skip_2というチェックボックスで判断するとすれば、こんな感じでしょうか。
    実際に動かしたコードではないのでご注意ください。

    function my_wpcf7_additional_mail( $additional_mail, $contact_form ) {
      if ( isset( $_POST['skip_2'] ) ) {
        $additional_mail = [];
      }
      return $additional_mail;
    }
    add_filter( 'wpcf7_additional_mail','my_wpcf7_additional_mail', 10, 2 );
    トピック投稿者 creator777

    (@creator777)

    @wildworks @munyagu
    こんにちは。
    お二人とも、教えてくださって、ありがとうございます。
    とても助かります。
    早速、試します。

    トピック投稿者 creator777

    (@creator777)

    @munyagu
    ありがとうございます。
    今、テストしましたら、教えてくださったコードで、意図した通り動きました。
    大変助かりました。
    感謝しています。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「Contact Form 7 メール2への自動返信選択」には新たに返信することはできません。