サポート » プラグイン » MW WP Form自動返信メールで選択がない項目を非表示に

  • 解決済 mokke3

    (@mokke3)


    はじめまして、お世話になります。

    WordPress: 6.0
    MW WP Form (v.4.4.0)

    MW WP Formで注文フォームを作成しております。
    ある商品の注文個数が初期値の0の場合、0を含む行を非表示にしたいです。

    過去のフォーラムなどを見ながら何度やっても、同じようにやっても出来ずでこの度投稿させていただきました。

    現在作成している注文フォームは、テーブルタグで「品名」、「価格」、「数量」の表を作成し
    数量の部分をセレクトボックスにしていて、初期値を”0”にしております。

    ▼フォームのイメージ
    品名 |価格 |数量
    商品1|300円| 1  ←セレクトボックス
    商品2|400円| 2
    商品3|500円| 0
    商品4|600円| 1

    ▼やりたい自動返信メールの内容
    商品1:300円×1個
    商品2:400円×2個
    商品4:600円×2個

    (※商品3は数量が0に選択されているため、自動返信メールに商品3の行が記載されない)

    設定している入力フォームは以下になります。

    <table>
    <thead>
    <tr>
    <th>品名</th>
    <th>価格</th>
    <th>数量</th>
    </tr>
    </thead>
    <tbody>
    <tr>
    <td>商品1</td>
    <td>300円</td>
    <td>[mwform_select name="qnty1" children="0,1,2,3" value="0"]個</td>
    </tr>
    <tr>
    <td>商品2</td>
    <td>400円</td>
    <td>[mwform_select name="qnty2" children="0,1,2,3" value="0"]個</td>
    </tr>
    <tr>
    <td>商品3</td>
    <td>500円</td>
    <td>[mwform_select name="qnty3" children="0,1,2,3" value="0"]個</td>
    </tr>
    <tr>
    <td>商品4</td>
    <td>600円</td>
    <td>[mwform_select name="qnty4" children="0,1,2,3" value="0"]個</td>
    </tr>
    </tbody>
    </table>

    としており、自動返信メールの設定は

    商品1:300円×{qnty1}個
    商品2:400円×{qnty2}個
    商品3:500円×{qnty3}個
    商品4:600円×{qnty4}個

    と書いております。

    functions.phpのほうには

    /**
     * my_mail
     * @param object $Mail
     * @param array $values
     * @param MW_WP_Form_Data $Data
     */
    function my_mail( $mail_raw, $values, $data ) {
    
    	if ( $values['qnty1'] == 0 ) {
    		$mail_raw->body = str_replace( ' 商品1:300円×{qnty1}個'."\r\n", '', $mail_raw->body );
    	}
        if ( $values['qnty2'] == 0 ) {
    		$mail_raw->body = str_replace( ' 商品2:400円×{qnty2}個'."\r\n", '', $mail_raw->body );
    	}
        if ( $values['qnty3'] == 0 ) {
    		$mail_raw->body = str_replace( ' 商品3:500円×{qnty3}個'."\r\n", '', $mail_raw->body );
    	}
        if ( $values['qnty4'] == 0 ) {
    		$mail_raw->body = str_replace( ' 商品4:600円×{qnty4}個'."\r\n", '', $mail_raw->body );
    	}
    	return $mail_raw;
    }
    add_filter( 'mwform_admin_mail_raw_mw-wp-form-フォームの識別番号', 'my_mail', 10, 3 );

    と書いているのですが、セレクトボックスの値が0でも表示されてしまいます。

    初心者のため初歩的なミスを犯していのるかもしれません…org

    記述している内容の問題点など、ご教授いただけましたら幸いです。
    何卒よろしくお願いいたします。

    • このトピックはmokke3が2ヶ月、 2週前に変更しました。
7件の返信を表示中 - 1 - 7件目 (全7件中)
  • こんにちは

    mwform_admin_mail_raw_mw-wp-form-xxx は管理者宛メールです。
    自動返信メールは mwform_auto_mail_raw_mw-wp-form-xxx ですかね。

    add_filter( 'mwform_admin_mail_raw_mw-wp-form-フォームの識別番号', 'my_mail', 10, 3 );

    add_filter( 'mwform_auto_mail_raw_mw-wp-form-フォームの識別番号', 'my_mail', 10, 3 );

    ご返信&ご指摘ありがとうございます!m(__)m
    やはり凡ミスありましたか…(;;)

    早速、
    add_filter( 'mwform_auto_mail_raw_mw-wp-form-フォームの識別番号', 'my_mail', 10, 3 );
    に直してやってみたのですが
    送信者宛にはメールが届かず、指定のない管理者宛にだけ自動返信メールが届きます。

    ちなみに下記両方指定するとどちらへもメールが届かない事態となってます…

    add_filter( 'mwform_admin_mail_raw_mw-wp-form-フォームの識別番号', 'my_mail', 10, 3 );
    add_filter( 'mwform_auto_mail_raw_mw-wp-form-フォームの識別番号', 'my_mail', 10, 3 );

    元の投稿と一部相違が出てしまい申し訳ありません。。

    もしかすると、ご指摘いただいた以外に間違いが無い場合ですが
    他プラグインやテーマとの相性が悪いとかって可能性もありますか?

    よろしくお願いいたします。

    トピック投稿者 mokke3

    (@mokke3)

    ishitaka様

    ご返信&ご指摘いただきありがとうございます。

    そしてすみません、トピックを立てるのにスパム認定されてしまい、
    複数回投稿を試みてしまったため同じような投稿がされてしまっております。(#forumにて連絡済みです)

    ご指摘いただいた点、完全にケアレスミスでした…以下に直しました。
     
    add_filter( 'mwform_auto_mail_raw_mw-wp-form-フォームの識別番号', 'my_mail', 10, 3 );
     
    しかし、0を含む行も表示されてしまい実現したいかたちでの自動返信メールは届かない状態です。。

    使用しているテーマやプラグインに問題があるのではないかと考えましたが、
    同サイト上で、MW WP Formのほかのフィルターフックを使用しているのですが
    そちらは問題なく機能しております。

    念の為、他のサーバーのテスト環境にて、別のテーマを使用し、
    まっさらな状態でフォームのタグ+自動返信メールのフィルターフックを記入し
    テストしてみましたが反応がなかったため、やはり自動返信メールの
    フィルターフックの記述に間違いがあるのではないかと推測しております。

    フィルターフックの記述など、以下のトピックを参考にさせていただいており、みなさんはできているようですが…
    なぜかできないので引き続きいろいろ試してやってます!
     
    mw-wp-formフォームについて
    MW WP Formで入力がない項目を自動返信メールから削除したい

    • この返信は2ヶ月、 2週前にmokke3が編集しました。
    • この返信は2ヶ月、 2週前にmokke3が編集しました。

    @mokke3 さんのコードで検証してみましたが、0を含む行は削除されました。

    MW WP Form 自動返信メールの本文の記述が違うのかもしれません。
    試しに、置換対象文字の先頭の空白と末尾の改行を削除してみてはどうでしょうか。
    $mail_raw->body = str_replace( ' 商品1:300円×{qnty1}個'."\r\n", '', $mail_raw->body );

    $mail_raw->body = str_replace( '商品1:300円×{qnty1}個', '', $mail_raw->body );

    トピック投稿者 mokke3

    (@mokke3)

    @ishitaka
     
    ご親切に検証していただき本当にありがとうございます(;;)

    こんなこと聞いてしまって申し訳ないのですが
    検証していただいた際はそのままコピペして最後の
     add_filter( 'mwform_auto_mail_raw_mw-wp-form-フォームの識別番号', 'my_mail', 10, 3 );
    この部分差し替えたという感じでしょうか…?
     
    >>試しに、置換対象文字の先頭の空白と末尾の改行を削除してみてはどうでしょうか。
      
    $mail_raw->body = str_replace( '商品1:300円×{qnty1}個', '', $mail_raw->body );
     
    こちらを引用させていただきfunctions.phpに保存し直しましたが、やはり0を含む行が表示されてしまいました。。
    @ishitaka 様が検証してくださり、実現できたということは私のほうでもできるということだと思いますので、粘ってみます!本当にありがとうございますm(__)m

    この部分差し替えたという感じでしょうか…?

    はい、mwform_admin_mail_raw を mwform_auto_mail_raw_mw へ、「フォームの識別番号」を実際の値(3102)へ変更しただけです。

    add_filter( 'mwform_admin_mail_raw_mw-wp-form-フォームの識別番号', 'my_mail', 10, 3 );

    add_filter( 'mwform_auto_mail_raw_mw-wp-form-3102', 'my_mail', 10, 3 );

    トピック投稿者 mokke3

    (@mokke3)

    @ishitaka

    その後あれこれいじっているうちにMW WP Formの設定で、ふと上から3つのチェックボックスにチェックを入れたらある日突然機能いたしました…><
    (URL引数をゆうこうにする 、問い合わせデータをDBに保存、画面変遷時のスクロールを有効にするの3つ)

    こんな初心者な自分に、親切に、そして親身に返信をくださって本当に感謝申し上げますm(__)m!!
    @ishitaka 様のおかげで諦めずに、思い通りの形を実現することができました。

    最終的に成功したphpコードを記載させていただき、解決済みとさせていただきます。
    本当にありがとうございました。

    functions.php

    /**
     * my_mail
     * @param object $Mail
     * @param array $values
     * @param MW_WP_Form_Data $Data
     */
    function my_mail( $mail_raw, $values, $data ) {
    
    	if ( $values['qnty1'] == 0 ) {
    		$mail_raw->body = str_replace( '商品1:300円×{qnty1}個'."\r\n", '', $mail_raw->body );
    	}
        if ( $values['qnty2'] == 0 ) {
    		$mail_raw->body = str_replace( '商品2:400円×{qnty2}個'."\r\n", '', $mail_raw->body );
    	}
        if ( $values['qnty3'] == 0 ) {
    		$mail_raw->body = str_replace( '商品3:500円×{qnty3}個'."\r\n", '', $mail_raw->body );
    	}
        if ( $values['qnty4'] == 0 ) {
    		$mail_raw->body = str_replace( '商品4:600円×{qnty4}個', '', $mail_raw->body );
    	}
    	return $mail_raw;
    }
    add_filter( 'mwform_auto_mail_raw_mw-wp-form-フォームの識別番号', 'my_mail', 10, 3 );a
    • この返信は2ヶ月、 1週前にmokke3が編集しました。理由: コードの一部修正
7件の返信を表示中 - 1 - 7件目 (全7件中)
  • このトピックに返信するにはログインが必要です。