動作の不具合の検証には環境情報が必要です。投稿の際は下記の情報をお書き添えください。
-------------------------------------------
WordPress のバージョン:(例 5.6)
Welcart のバージョン:(例 2.1.1)
PHP のバージョン:(例 7.4)
Welcart専用の拡張プラグインとバージョン:(例 DL Seller 3.0.8、SKU Select 1.1.4)
ご利用のテーマ:(例 WelcartBasic の自作子テーマ)
症状を確認したブラウザ:
サーバー【重要】:(会社名、サービス名)
--------------------------------------------

フォーラムへの返信

4件の投稿を表示中 - 1 - 4件目 (全4件中)
  • 投稿者
    投稿
  • 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個に限るのかどうかはよく分からないので、複数商品が入った場合でも対応できるよう書いてます。ただ、ぱぱっと書いたものなので、あくまで参考にしてもらって、やりたいようにいじってもらえれば幸いです。

    omame
    参加者

    度々お手数をお掛け致しまして大変申し訳ありません。

    Welcartのバージョンを1.0.10に更新させて頂き、

    上記

    $user = $member_id;

    を追加することで、②の取得も無事完了致しました。

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

    引き続き、何卒宜しくお願い致します。

    omame
    参加者

    度々申し訳ありません。

    私の方で何か勘違いをしておりました。

    下記のコードで、①に関して会員番号の取得は出来ました。

    add_filter('usces_filter_send_regmembermail_message', 'my_filter_send_regmembermail_message', 10, 2);
    function my_filter_send_regmembermail_message() {
    global $usces;
    $args = func_get_args();
    $mail_data = $usces->options['mail_data'];
    $user = $args[1];
    $message = $mail_data['header']['membercomp'];
    $message .= "n会員番号:" . trim($user['ID']) . "n";
    $message .= $mail_data['footer']['membercomp'];
    return $message;
    }

    ただ、②が引き続き取得出来ておりません。

    ご教示頂ければ幸いです。

    何卒宜しくお願い申し上げます。

    omame
    参加者

    早速のご返信、誠にありがとうございます。

    上記を追加し、表示を試みましたが、なお取得が出来ておりません。

    説明不足で大変申し訳ありませんが、

    ①通常の会員登録後、送信されるメールに会員番号の記載

    ②カートページ遷移中に会員登録後、送信されるメールに会員番号の記載

    2つの場合で考えております。

    前記の追加コードは②のものにあたるかと思いますが、引数$userの展開が上手くいきません。

    仮に、

    usces_filter_send_regmembermail_message

    上記フィルターを利用する場合、どのようなコードを書けば、①・②の両方で会員番号の記載が可能になりますでしょうか。

    もしくは別のフィルターを使用した方が良いのでしょうか。

    会員登録完了メールのカスタマイズについて

    こちらに書かれているコードも再度試しましたが、①・②共に変わらず取得できません。

    度々恐縮ですが、

    何卒ご教示下さると幸いです。

    宜しくお願い致します。

4件の投稿を表示中 - 1 - 4件目 (全4件中)