自動送信メールの本文変更
-
投稿者投稿
-
2014年11月26日 4:02 PM #72876JunichiK参加者
いつもお世話になります。
サンキューメールと受注メールの本文を変更したいのですが、どこをカスタマイズすればよろしいでしょうか?
具体的には、タイトル【ご注文内容】の変更、購入者情報項目の変更削除、注文内容明細から単価文言と数量削除、送料・代引手数料項目削除、配送先全般削除、といった感じです。よろしくお願いいたします。
2014年11月28日 3:41 PM #72911nanbuキーマスターこんにちは。
管理メールは ’usces_filter_order_confirm_mail_bodyall’、サンキューメールには’usces_filter_send_order_mail_bodyall’ というフィルターフックが用意されています。
2014年11月29日 12:09 AM #72915JunichiK参加者お世話になります。
それらのフックはどのファイルにございますか?
2014年11月29日 12:16 AM #72916JunichiK参加者上記分かりました。functions/function.phpでした。
2014年12月5日 8:27 AM #72962JunichiK参加者フィルターフック usces_filter_send_order_mail_bodyall で wp_get_object_terms()を取得したいのですが、取得できません。
タクソノミーが存在しないという WP_Error が返ってきます。
他のテンプレートでは正常に取得できているのですが、なぜでしょう?
functions.php のフィルターフックのコードは概ね下記のような感じです。add_filter( 'usces_filter_send_order_mail_bodyall', 'my_filter_send_order_mail_bodyall', 10, 2 ); function my_filter_send_order_mail_bodyall( $msg_body, $data ) { $user = wp_get_current_user(); $user_id = get_current_user_id(); $user_terms = wp_get_object_terms( $user_id, 'user-group' ); if( !empty( $user_terms ) ) { if( !is_wp_error( $user_terms ) ) { foreach( $user_terms as $user_term ) { } } } $msg_body = "\r\n\r\n\r\n【お支払内容】\r\n"; $msg_body .= usces_mail_line( 1, $data['order_email'] );//******************** $msg_body .= "メールアドレス:" .$user->get('user_email'). "\r\n"; $msg_body .= "お名前 :" .$user->get('display_name'). " 様\r\n"; $msg_body .= "ID :" .$user_id. "\r\n"; $msg_body .= "所属 :" .$user_term->name. "\r\n"; return $msg_body; }
ちなみに $msg_body 以下をコメントアウトして直接 return $user_term->name; としても取得できません。
WP_Error が返ってきていることは分かっています。何卒ご教示のほどよろしくお願いいたします。
2014年12月6日 3:27 PM #72976nanbuキーマスターこんにちは。
$user = wp_get_current_user(); とありますが、WordPressのユーザーを取得していらっしゃるようですが、Welcartのユーザーはこれでは取得できません。何か意図があってのことでしょうか。
‘usces_filter_send_order_mail_bodyall’、これはサンキューメールでのフックです。クレジットカードでは、WPにログインしていても取得するのは無理かもしれません。WPのログイン状態にはならない可能性があります。
2014年12月6日 4:07 PM #72977JunichiK参加者nanbu様、お世話になります。
Welcartのユーザーは取得せずに(会員システムを使わずに)、WordPressのユーザーを使用しています。
register_taxonomyの第二引数にuserを指定することで、user-group というタクソノミーでWPユーザーをグループ分けしており、それを使用する必要があるからです。サンキューメール等のWelcartの自動送信メールに、WPユーザー名やグループ(term)などを表示したいのですが、$user->get(‘user_email’) や $user->get(‘display_name’) は取得出来ておりますので、WPのログイン状態にはなっていると思います。
ですが、なぜか $user_term->name は取得できないのです。- この返信は9年、 11ヶ月前にJunichiKが編集しました。
2014年12月11日 4:45 PM #73020nanbuキーマスター$user_id = get_current_user_id();
が取得できているのでしたら
`$user_terms = wp_get_object_terms( $user_id, ‘user-group’ );’
も取得できるのではないでしょうか。
特にコードが間違っているようには見えませんが・・・2014年12月11日 4:54 PM #73022JunichiK参加者私も取得出来るものだと思っていたのですが、$user_terms に WP_Error が返ってきているようで、
return $user_terms->get_error_message();
でエラーメッセージを確認しますと、「不正なタクソノミー分類です。」と返ってきております。2015年1月25日 2:12 AM #73335JunichiK参加者試行錯誤しておりますが、サンキューメールのカスタマイズが思うようにいきません。
フックの使い方が不慣れのせいもあり、なかなかうまくいきません。ヒントをお願いいたします。
希望しているのは、送料や配送先などの情報は不要で、下記の内容のみを取得したいのです。ご注文内容(メールアドレス、名前、注文日時)
商品明細(商品コード、商品名、単価)
合計金額
支払い方法
その他$msg_bodyには、’usces_filter_send_order_mail_bodyall’フック以外にも多数のフックが絡んでいるようで、それらをどのようにしてよいのか分からなくなっております。
何卒ご教示のほどよろしくお願いいたします。2015年1月26日 12:45 AM #73337JunichiK参加者いつもお世話になります。
希望するサンキューメール本文は下記の通りです。
ここから——————–
【ご注文内容】
******************************************************
注文番号 : 00001234
注文日時 : 2015-01-26 00:24:41
商品 :
——————————————————————
(商品名) (商品コード)
単価 ¥10,000 × 1
=============================================
商品合計 : ¥10,000
代引手数料 : ¥0
——————————————————————
お支払い金額 : ¥10,000
——————————————————————
(通貨 : 円)【お支払方法】
******************************************************
代金引換【その他】
******************************************************
——————–ここまで上記の件につきまして、plugins/usc-e-shop/functionsのfunction.phpを下記のようにコメントアウトしますと、希望通りのサンキューメールになります(コメントアウト部分は///でマークしております)。
function usces_send_ordermail($order_id) { global $usces, $wpdb; $tableName = $wpdb->prefix . "usces_order"; $query = $wpdb->prepare("SELECT * FROM $tableName WHERE ID = %d", $order_id); $data = $wpdb->get_row( $query, ARRAY_A ); $cart = $usces->cart->get_cart(); $entry = $usces->cart->get_entry(); $mail_data = $usces->options['mail_data']; $payment = $usces->getPayments( $entry['order']['payment_name'] ); $res = false; $msg_body = "\r\n\r\n\r\n" . __('** content of ordered items **','usces') . "\r\n"; $msg_body .= usces_mail_line( 1, $entry['customer']['mailaddress1'] );//******************** $msg_body .= apply_filters('usces_filter_send_order_mail_first', NULL, $data); /// $msg_body .= uesces_get_mail_addressform( 'order_mail_customer', $entry, $order_id ); $msg_body .= __('Order number','usces') . "\t: " . usces_get_deco_order_id( $order_id ) . "\r\n"; $msg_body .= __( 'order date','usces' ) . "\t: " . $data['order_date'] . "\r\n"; $meisai = __('Items','usces') . "\t\t: \r\n"; foreach ( $cart as $cart_row ) { $post_id = $cart_row['post_id']; $sku = urldecode($cart_row['sku']); $quantity = $cart_row['quantity']; $options = $cart_row['options']; $itemCode = $usces->getItemCode($post_id); $itemName = $usces->getItemName($post_id); $cartItemName = $usces->getCartItemName($post_id, $sku); $skuPrice = $cart_row['price']; // $pictids = $usces->get_pictids($itemCode); if (!empty($options)) { // $optstr = implode(',', $options); } else { $optstr = ''; $options = array(); } $meisai .= usces_mail_line( 2, $entry['customer']['mailaddress1'] );//-------------------- $meisai .= "$cartItemName \r\n"; if( is_array($options) && count($options) > 0 ){ $optstr = ''; foreach($options as $key => $value){ if( !empty($key) ) { $key = urldecode($key); if(is_array($value)) { $c = ''; $optstr .= $key. ' : '; foreach($value as $v) { $optstr .= $c.urldecode($v); $c = ', '; } $optstr .= "\r\n"; } else { $optstr .= $key . ' : ' . urldecode($value) . "\r\n"; } } } $meisai .= apply_filters( 'usces_filter_option_ordermail', $optstr, $options); } $meisai .= __('Unit price','usces') . " ".usces_crform( $skuPrice, true, false, 'return' ) . __(' * ','usces') . $cart_row['quantity'] . "\r\n"; } $meisai .= usces_mail_line( 3, $entry['customer']['mailaddress1'] );//==================== $meisai .= __('total items','usces') . "\t: " . usces_crform( $entry['order']['total_items_price'], true, false, 'return' ) . "\r\n"; if ( $entry['order']['discount'] != 0 ) $meisai .= apply_filters('usces_confirm_discount_label', __('Campaign disnount', 'usces'), $order_id) . " : " . usces_crform( $entry['order']['discount'], true, false, 'return' ) . "\r\n"; if ( 0.00 < (float)$entry['order']['tax'] && 'products' == usces_get_tax_target() ) $meisai .= usces_tax_label($data, 'return') . "\t: " . usces_crform( $entry['order']['tax'], true, false, 'return' ) . "\r\n"; /// $meisai .= "\r\n" . __('Shipping','usces') . "\t\t: " . usces_crform( $entry['order']['shipping_charge'], true, false, 'return' ) . "\r\n"; if ( $payment['settlement'] == 'COD' ) $meisai .= apply_filters('usces_filter_cod_label', __('COD fee', 'usces')) . "\t: " . usces_crform( $entry['order']['cod_fee'], true, false, 'return' ) . "\r\n"; if ( 0.00 < (float)$entry['order']['tax'] && 'all' == usces_get_tax_target() ) $meisai .= usces_tax_label($data, 'return') . "\t: " . usces_crform( $entry['order']['tax'], true, false, 'return' ) . "\r\n"; if ( $entry['order']['usedpoint'] != 0 ) $meisai .= __('use of points','usces') . " : " . number_format($entry['order']['usedpoint']) . __('Points','usces') . "\r\n"; $meisai .= usces_mail_line( 2, $entry['customer']['mailaddress1'] );//-------------------- $meisai .= __('Payment amount','usces') . " : " . usces_crform( $entry['order']['total_full_price'], true, false, 'return' ) . "\r\n"; $meisai .= usces_mail_line( 2, $entry['customer']['mailaddress1'] );//-------------------- $meisai .= "(" . __('Currency', 'usces') . ' : ' . __(usces_crcode( 'return' ), 'usces') . ")\r\n\r\n"; $msg_body .= apply_filters('usces_filter_send_order_mail_meisai', $meisai, $data, $cart, $entry); /// $msg_shipping = __('** A shipping address **','usces') . "\r\n"; /// $msg_shipping .= usces_mail_line( 1, $entry['customer']['mailaddress1'] );//******************** /// $msg_shipping .= uesces_get_mail_addressform( 'order_mail', $entry, $order_id ); /// $deli_meth = (int)$entry['order']['delivery_method']; /// if( 0 <= $deli_meth ){ /// $deli_index = $usces->get_delivery_method_index($deli_meth); /// if( 0 <= $deli_index ) $msg_shipping .= __('Delivery Method','usces') . "\t: " . $usces->options['delivery_method'][$deli_index]['name'] . "\r\n"; /// } /// $msg_shipping .= __('Delivery date','usces') . " : " . $entry['order']['delivery_date'] . "\r\n"; /// $msg_shipping .= __('Delivery Time','usces') . " : " . $entry['order']['delivery_time'] . "\r\n"; /// $msg_shipping .= "\r\n"; /// $msg_body .= apply_filters('usces_filter_send_order_mail_shipping', $msg_shipping, $data, $entry ); $msg_payment = __('** Payment method **','usces') . "\r\n"; $msg_payment .= usces_mail_line( 1, $entry['customer']['mailaddress1'] );//******************** $msg_payment .= $payment['name'] . usces_payment_detail($entry) . "\r\n\r\n"; if ( $payment['settlement'] == 'transferAdvance' || $payment['settlement'] == 'transferDeferred' ) { $transferee = __('Transfer','usces') . " : \r\n"; $transferee .= $usces->options['transferee'] . "\r\n"; $msg_payment .= apply_filters('usces_filter_mail_transferee', $transferee, $payment); $msg_payment .= "\r\n".usces_mail_line( 2, $entry['customer']['mailaddress1'] )."\r\n";//-------------------- } elseif($payment['settlement'] == 'acting_jpayment_conv') { $args = maybe_unserialize($usces->get_order_meta_value($payment['settlement'], $order_id)); $msg_payment .= __('決済番号', 'usces').' : '.$args['gid']."\r\n"; $msg_payment .= __('決済金額', 'usces').' : '.number_format($args['ta']).__('dollars','usces')."\r\n"; $msg_payment .= __('お支払先', 'usces').' : '.usces_get_conv_name($args['cv'])."\r\n"; $msg_payment .= __('コンビニ受付番号','usces').' : '.$args['no']."\r\n"; if($args['cv'] != '030') {//ファミリーマート以外 $msg_payment .= __('コンビニ受付番号情報URL', 'usces').' : '.$args['cu']."\r\n"; } $msg_payment .= "\r\n".usces_mail_line( 2, $entry['customer']['mailaddress1'] )."\r\n";//-------------------- } elseif($payment['settlement'] == 'acting_jpayment_bank') { $args = maybe_unserialize($usces->get_order_meta_value($payment['settlement'], $order_id)); $msg_payment .= __('決済番号', 'usces').' : '.$args['gid']."\r\n"; $msg_payment .= __('決済金額', 'usces').' : '.number_format($args['ta']).__('dollars','usces')."\r\n"; $bank = explode('.', $args['bank']); $msg_payment .= __('銀行コード','usces').' : '.$bank[0]."\r\n"; $msg_payment .= __('銀行名','usces').' : '.$bank[1]."\r\n"; $msg_payment .= __('支店コード','usces').' : '.$bank[2]."\r\n"; $msg_payment .= __('支店名','usces').' : '.$bank[3]."\r\n"; $msg_payment .= __('口座種別','usces').' : '.$bank[4]."\r\n"; $msg_payment .= __('口座番号','usces').' : '.$bank[5]."\r\n"; $msg_payment .= __('口座名義','usces').' : '.$bank[6]."\r\n"; $msg_payment .= __('支払期限','usces').' : '.substr($args['exp'], 0, 4).'年'.substr($args['exp'], 4, 2).'月'.substr($args['exp'], 6, 2)."日\r\n"; $msg_payment .= "\r\n".usces_mail_line( 2, $entry['customer']['mailaddress1'] )."\r\n";//-------------------- } $msg_body .= apply_filters('usces_filter_send_order_mail_payment', $msg_payment, $order_id, $payment, $cart, $entry, $data); $msg_body .= usces_mail_custom_field_info( 'order', '', $order_id ); $msg_body .= "\r\n"; $msg_body .= __('** Others / a demand **','usces') . "\r\n"; $msg_body .= usces_mail_line( 1, $entry['customer']['mailaddress1'] );//******************** $msg_body .= $entry['order']['note'] . "\r\n\r\n";
しかし、これを、テーマの functions.php にて ‘usces_filter_send_order_mail_bodyall’ フックを使って行うと、注文番号と注文日時が取得出来なくて困っております。
関数の引数に$dataを入れたり、
$msg_body .= __('Order number','usces') . "\t: " . usces_get_deco_order_id( $order_id ) . "\r\n";
の $order_id を $data に変更してみたりしましたが、思うようにいきませんでした。
何かヒントだけでも良いので、ご教示願います。
よろしくお願いいたします。2015年1月27日 11:24 AM #73351nanbuキーマスター配送方法等を取りたいという事でしたらフックは’usces_filter_send_order_mail_shipping’となります。
ただ、金額欄の送料を取るのは難しいです。2015年2月3日 11:29 AM #73376JunichiK参加者nanbu様、ありがとうございます。
仰せの通り、’usces_filter_send_order_mail_shipping’で配送方法を取り除くことは出来ました。
金額欄の送料を取るのは難しいということですが、
$msg_body .= uesces_get_mail_addressform( 'order_mail_customer', $entry, $order_id );
で取得している住所や電話番号・FAX番号を取り除くことも難しいでしょうか?
部分的に取るのが難しいようでしたら、メールアドレスや名前も含めて取り除いてもかまいません。
ただ、注文番号と注文日時は活かしたいのですが、そのようなことは難しいでしょうか?何卒よろしくお願いいたします。
2015年2月4日 7:02 PM #73388nglife参加者横から失礼します。
希望されているサンキューメールですが、テーマfunctions.phpに下記追加してみてください。
多分いけるかと思います。add_filter("usces_filter_apply_mail_addressform", "my_filter_apply_mail_addressform", 10, 4); function my_filter_apply_mail_addressform($formtag, $type, $data, $order_id){ if($type === "order_mail_customer"){ $formtag = ""; } return $formtag; } add_filter("usces_filter_send_order_mail_meisai", "my_filter_send_order_mail_meisai", 10, 4); function my_filter_send_order_mail_meisai($meisai, $data, $cart, $entry){ $ptn = "/\r\n". __('Shipping','usces') .".+?\r\n/u"; if(preg_match($ptn, $meisai)){ $meisai = preg_replace($ptn, "", $meisai); } return $meisai; } add_filter("usces_filter_send_order_mail_shipping", "my_filter_send_order_mail_shipping", 10, 3); function my_filter_send_order_mail_shipping($msg_shipping, $data, $entry){ $msg_shipping = ""; return $msg_shipping; }
※諸々細かい説明は割愛します。すみません。
※作業中のコード(フィルター)は全て消して上のコードのみで試してみてください。2015年2月5日 1:35 PM #73398JunichiK参加者nglife様、ありがとうございます。
おかげ様で、概ね、うまくいきました。
ただ、$msg_bodyの内容を変更したい箇所が数ヶ所ございまして、それらをどうすべきか悩んでおります。下記箇所等になります。
$msg_body = "\r\n\r\n\r\n" . __('** content of ordered items **','usces') . "\r\n";
上記は【ご注文内容】と表示されるところですが、これを【お支払内容】に変更したいのです。
また、注文番号→お支払い番号、注文日時→お支払い日時、商品→ご請求内容、単価→金額、商品合計→合計金額・・・としたいのですが、可能でしょうか?何卒よろしくお願いいたします。
-
投稿者投稿
- このトピックに返信するにはログインが必要です。