サポート » プラグイン » [MW WP Form] mwform_admin_mail_raw_mw-wp-formフックでキーが使いない

  • 解決済モデレーター gatespace

    (@gatespace)


    WordPress 4.1.2
    MW WP Form 2.4.5

    http://plugins.2inc.org/mw-wp-form/filter-hook/mwform_admin_mail_raw/

    MW WP Formで上記を参考に mwform_admin_mail_raw_mw-wp-form-(数字)フィルターフックで
    送信先(CC)にフォームで設定してある項目を設定しようとしました。
    マニュアルでは {キー} が使えるとあるのですが、実際下記のコードを書くと空になるようで、送信されませんでした。

    フォームの設定
    [mwform_hidden name="cc_mail"]

    追記:hiddenですが、別のフィルターフックでメールアドレスが入るようになっており、
    下記の通りHTMLソース上では期待するメールアドレスが入力されています。
    <input type="hidden" name="cc_mail" value="info@example.com">

    テーマに追記してるコード

    function my_mail( $Mail_raw, $values, $Data ) {
        $Mail_raw->cc = '{cc_mail}';
        return $Mail_raw;
    }
    add_filter( 'mwform_admin_mail_raw_mw-wp-form-(数字)', 'my_mail', 10, 3 );

    なお

    function my_mail( $Mail_raw, $values, $Data ) {
        $Mail_raw->cc = 'info@example.com';
        return $Mail_raw;
    }
    add_filter( 'mwform_admin_mail_raw_mw-wp-form-(数字)', 'my_mail', 10, 3 );

    とすればToはもちろんCCは送信されています。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • 詳しくありがとうございます。

    マニュアルに記載漏れがありまして申し訳ないのですが、TO、CC、BCC、添付ファイルについては {キー} の変換が無視されるようになっています。

    これはTOやCCが外部から書き換えられる危険があると判断したためです(フォームに埋めたhiddenをCCにするようにした場合、hiddenは容易に書き換えられるので、管理者メールが想定外のところに送信される可能性がある)。

    が、mwform_custom_mail_tag_mw-wp-form-(数字) では変更できるようにしても良いのではないかなと思ったので、それについては実装できるか検討してみます。

    モデレーター gatespace

    (@gatespace)

    CCについては了解しました。

    やりたいことをもっと詳しく書くと、フォームの送信先をWordPressのユーザーごとに書き換えたかったのです。

    でさすがに hidden でメルアドを渡すのではなく、ここではユーザーIDを渡しています。
    そして、管理者向けにメール送信時に、ユーザーIDを元にCCにユーザーのメールアドレスを入れたかったのでした。
    ただ開発中に入力さたIDからメールアドレスを取得できていないのか、ccへの渡し方が悪かったのか判断できなかったため、苦肉の策でhiddenにメルアドを入れていたのでした。

    が、mwform_custom_mail_tag_mw-wp-form-(数字) では変更できるようにしても良いのではないかなと思ったので、それについては実装できるか検討してみます。

    これできるとありがたいので、検討よろしくお願いします。

    なるほどなるほど。メルアド直渡しでないのであれば、MW_WP_Form_Mail が変換用のメソッドを持っているので、MW_WP_Form_Mail を継承し、かつ $_ID みたいなプロパティをもつクラスを作ってフック内でインスタンス化、でそのオブジェクトの $_ID に {CCユーザーのID} を突っ込んで変換させて取得、みたいな方法が無理やりですが現状ではできるかもしれません。

    試してないので動くかわかりませんが…

    function my_mail( $Mail_raw, $values, $Data ) {
        $current_filter = current_filter();
        $form_id = preg_replace( '/^.+?(\d+)$/', '$1', $current_filter );
        $Setting = new MW_WP_Form_Setting( $form_id )
    
        $Mail_Dummy = new MW_WP_Form_Mail_Dummy();
        $Mail_Dummy->_id = {cc_id};
        $Mail_Dummy->parse( $Setting );
        $cc_id = $Mail_Dummy->_id;
        $cc_email = get_userdata( $cc_id )->user_email;
    
        $Mail_raw->cc = $cc_email;
        return $Mail_raw;
    }
    add_filter( 'mwform_admin_mail_raw_mw-wp-form-(数字)', 'my_mail', 10, 3 );

    あ、というかこういう面倒なことしなくても下記でも良いかもです。

    function my_mail( $Mail_raw, $values, $Data ) {
        $cc_id = $Data->get( 'cc_id' );
        $cc_email = get_userdata( $cc_id )->user_email;
    
        $Mail_raw->cc = $cc_email;
        return $Mail_raw;
    }
    add_filter( 'mwform_admin_mail_raw_mw-wp-form-(数字)', 'my_mail', 10, 3 );
    モデレーター gatespace

    (@gatespace)

    Kitajimaさんありがとうございます。

    2回めに頂いた簡単な方で実装できました。

    なお、WordPressユーザーのメールアドレスが test@example.com の場合

    headers:Cc: test@example.com

    となりました。(上記はデバッグモードのログですが、実際に配信もされました)

    ありがとうございました。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「[MW WP Form] mwform_admin_mail_raw_mw-wp-formフックでキーが使いない」には新たに返信することはできません。