custom fieldの内容をサンキューメールに表記したい

フォーラム 使い方全般 custom fieldの内容をサンキューメールに表記したい

  • このトピックには2件の返信、2人の参加者があり、最後にkaichiにより11年、 2ヶ月前に更新されました。
3件の投稿を表示中 - 1 - 3件目 (全3件中)
  • 投稿者
    投稿
  • #53080
    kaichi
    参加者

    動作に関するご質問の場合は必ずご記入ください。


    WordPress のバージョン:3.6

    Welcart のバージョン:1.3.5

    ご利用のテーマ:Welcart Default Theme

    症状を確認したブラウザ:

    サーバー(会社名、サービス名):ロリポップ、ロリポプラン

    SSLの利用: 無し

    WordPress のパーマリンク設定:custmon /%postname%/


    商品のcustom fieldの内容を自動送信のサンキューメール(ご注文内容の確認)に含める方法はあるのでしょうか?

    具体的には商品購入者には、無料でプレゼントするpdfファイルをダウンロードするURLをcustom fieldに記載しようと考えています。

    usc-e-shop/functions/function.phpの443行あたりを変更して対応したいと思いますが、custom fieldを参照する関数はあるのでしょうか?

    現状では、

    $msg_body .= __(‘【無料プレゼントPDFファイルのURL】’,’usces’) . “rn”;

    $msg_body .= usces_mail_line( 1, $entry );//********************

    《ここでcustom fieldに記載したurlを表示したい》

    ご教授いただければ助かります。よろしくお願いいたします。

    #67487
    omame
    参加者

    もう解決されていたらすみません。

    本体のカスタマイズよりは、

    同ファイルusc-e-shop/functions/function.phpの451行にある便利なfilterを使った方がいいかと思います↓。

    $msg_body .= apply_filters('usces_filter_send_order_mail_body', NULL, $data);

    あとカスタムフィールドの取得には、「get_post_custom($post_id)」です。

    ※WordPressの関数です

    filterの使い方をご存知かどうか分かりませんが、

    一例としてテーマのfunctionに

    add_filter('usces_filter_send_order_mail_body', 'my_filter_send_order_mail_body', 10, 2);
    function my_filter_send_order_mail_body($foo, $data){
    //$fooはNULL
    global $usces;
    $entry = $usces->cart->get_entry();

    $c_fields = array();
    if(isset($data['order_cart'])){
    $carts = maybe_unserialize($data['order_cart']);
    if(is_array($carts)){
    foreach($carts as $cart){
    //カート内からpost_idを参照し、get_post_customでカスタムフィールド全取得
    $p_custom = get_post_custom($cart['post_id']);
    if($p_custom['取り出したいkey'][0]){
    //商品名
    $item_name = $p_custom['_itemName'][0];
    //keyを商品名、valueをURL
    $c_fields[$item_name] = $p_custom['取り出したいkey'][0];
    }
    }
    }
    }

    $text = '';
    if(count($c_fields) > 0){
    $text .= __('【無料プレゼントPDFファイルのURL】','usces') . "rn";
    $text .= usces_mail_line( 1, $entry['customer']['mailaddress1'] );//*******************
    foreach($c_fields as $c_key => $c_field){
    $text .= "商品名:" . $c_key . "rn";
    $text .= "URL:" . $c_field . "rn";
    }
    $text .= "rn";
    }
    return $text;
    }

    と書くと、本体をカスタマイズすることなく、購入商品名と記載したいURLが併せてメール本文の一番下に登場するかと思います。

    「取り出したいkey」(2か所)には、取り出したいカスタムフィールドのkeyを入れて下さい

    あと、上のままだと、本文を確認する際に受注データを都度入れないと確認できないと思うので、

    add_filterの第一引数「usces_filter_send_order_mail_body」を、「usces_filter_order_confirm_mail_body」に変えると、

    管理画面→受注リスト→個別編集→メール・印刷フィールド表示→注文確認メールとかで本文内容のチェックがぱっとできます。

    ※もし他の人が管理画面からのメールを使っている時は当然避けましょう。意図せずそれで送信される可能性がありますので。

    問題なければ引数を元に戻して、最終的な動作確認をすると楽です。

    カート内の商品数は1個に限るのかどうかはよく分からないので、複数商品が入った場合でも対応できるよう書いてます。ただ、ぱぱっと書いたものなので、あくまで参考にしてもらって、やりたいようにいじってもらえれば幸いです。

    #67488
    kaichi
    参加者

    omame様

    御指導ありがとうございます

    指示に従いファイル修正すると当方の希望通りの動作が確認できました

    早期に解決することができ、本当にありがとうございました

    これからもどうぞ宜しくお願いいたします

3件の投稿を表示中 - 1 - 3件目 (全3件中)
  • このトピックに返信するにはログインが必要です。