JunichiK

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

フォーラムへの返信

15件の投稿を表示中 - 16 - 30件目 (全47件中)
  • 投稿者
    投稿
  • 返信先: 自動送信メールの本文変更 #73435
    JunichiK
    参加者

    nglife様、本当にありがとうございます。
    何度も無理申しましてすみません。

    この前にご回答いただいたコードから、preg_replace()関数を使用するのか…と思っていたところでしたので、スッキリいたしました。
    もし、可能なら、もう1つだけお付き合いいただけないでしょうか。
    ご教示いただいたコードを参考に試行錯誤しておりますが、うまくいかない箇所が一つありまして…。無理なら諦めます。
    単価の後の数量( × 1)を消したいのです。
    function.phpにある元のコードは下記ですが、消したい要素に’$cart_row[‘quantity’] . “\r\n”‘というふうに変数が絡んでいるので、うまくいきません。
    $meisai .= __('Unit price','usces') . " ".usces_crform( $skuPrice, true, false, 'return' ) . __(' * ','usces') . $cart_row['quantity'] . "\r\n";
    preg_replace()で $cart_row[‘quantity’] を置換する方法を教えていただければ助かります。

    すみません、よろしくお願い致します。

    • この返信は6年、 8ヶ月前にJunichiKが編集しました。
    返信先: 自動送信メールの本文変更 #73398
    JunichiK
    参加者

    nglife様、ありがとうございます。
    おかげ様で、概ね、うまくいきました。
    ただ、$msg_bodyの内容を変更したい箇所が数ヶ所ございまして、それらをどうすべきか悩んでおります。下記箇所等になります。
    $msg_body = "\r\n\r\n\r\n" . __('** content of ordered items **','usces') . "\r\n";
    上記は【ご注文内容】と表示されるところですが、これを【お支払内容】に変更したいのです。
    また、注文番号→お支払い番号、注文日時→お支払い日時、商品→ご請求内容、単価→金額、商品合計→合計金額・・・としたいのですが、可能でしょうか?

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

    返信先: 自動送信メールの本文変更 #73376
    JunichiK
    参加者

    nanbu様、ありがとうございます。

    仰せの通り、’usces_filter_send_order_mail_shipping’で配送方法を取り除くことは出来ました。

    金額欄の送料を取るのは難しいということですが、
    $msg_body .= uesces_get_mail_addressform( 'order_mail_customer', $entry, $order_id );
    で取得している住所や電話番号・FAX番号を取り除くことも難しいでしょうか?
    部分的に取るのが難しいようでしたら、メールアドレスや名前も含めて取り除いてもかまいません。
    ただ、注文番号と注文日時は活かしたいのですが、そのようなことは難しいでしょうか?

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

    返信先: 自動送信メールの本文変更 #73337
    JunichiK
    参加者

    いつもお世話になります。
    希望するサンキューメール本文は下記の通りです。
    ここから——————–
    【ご注文内容】
    ******************************************************
    注文番号 : 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 に変更してみたりしましたが、思うようにいきませんでした。
    何かヒントだけでも良いので、ご教示願います。
    よろしくお願いいたします。

    返信先: 自動送信メールの本文変更 #73335
    JunichiK
    参加者

    試行錯誤しておりますが、サンキューメールのカスタマイズが思うようにいきません。
    フックの使い方が不慣れのせいもあり、なかなかうまくいきません。ヒントをお願いいたします。
    希望しているのは、送料や配送先などの情報は不要で、下記の内容のみを取得したいのです。

    ご注文内容(メールアドレス、名前、注文日時)
    商品明細(商品コード、商品名、単価)
    合計金額
    支払い方法
    その他

    $msg_bodyには、’usces_filter_send_order_mail_bodyall’フック以外にも多数のフックが絡んでいるようで、それらをどのようにしてよいのか分からなくなっております。
    何卒ご教示のほどよろしくお願いいたします。

    返信先: 商品登録画面の項目の非表示 #73254
    JunichiK
    参加者

    nglifeさん、ありがとうございます。
    意外に簡単に出来たので助かりました。
    難しく考えすぎていたのか、プラグインの管理画面はWordPressの管理画面のようにはいかないものだと思い込んでおりました。
    感謝です。

    JunichiK
    参加者

    nanbu様、ご回答ありがとうございます。
    助かりました。
    admin_headフックのタイミングでうまくいきました。
    ありがとうございました。

    返信先: 自動送信メールの本文変更 #73022
    JunichiK
    参加者

    私も取得出来るものだと思っていたのですが、$user_terms に WP_Error が返ってきているようで、
    return $user_terms->get_error_message();
    でエラーメッセージを確認しますと、「不正なタクソノミー分類です。」と返ってきております。

    返信先: 自動送信メールの本文変更 #72977
    JunichiK
    参加者

    nanbu様、お世話になります。

    Welcartのユーザーは取得せずに(会員システムを使わずに)、WordPressのユーザーを使用しています。
    register_taxonomyの第二引数にuserを指定することで、user-group というタクソノミーでWPユーザーをグループ分けしており、それを使用する必要があるからです。

    サンキューメール等のWelcartの自動送信メールに、WPユーザー名やグループ(term)などを表示したいのですが、$user->get(‘user_email’) や $user->get(‘display_name’) は取得出来ておりますので、WPのログイン状態にはなっていると思います。
    ですが、なぜか $user_term->name は取得できないのです。

    • この返信は6年、 10ヶ月前にJunichiKが編集しました。
    返信先: 自動送信メールの本文変更 #72962
    JunichiK
    参加者

    フィルターフック 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 が返ってきていることは分かっています。

    何卒ご教示のほどよろしくお願いいたします。

    返信先: 自動送信メールの本文変更 #72916
    JunichiK
    参加者

    上記分かりました。functions/function.phpでした。

    返信先: 自動送信メールの本文変更 #72915
    JunichiK
    参加者

    お世話になります。

    それらのフックはどのファイルにございますか?

    JunichiK
    参加者

    DLSellerの説明を拝見しましたところ、

    サービスを購入する場合はログインが必要となります。

    と書いてあるのですが、ログインを省くことは可能なのでしょうか?

    JunichiK
    参加者

    nanbu様、お世話になります。

    会員システムを使用するかどうか「Welcart Shop -基本設定-」で変更できます。

    これは存じておりますが、基本設定で会員システムのチェックを外しても、結局は都度、名前や住所等のお客様情報の入力が必要になりますよね?
    それを省きたいのです。
    お客様情報をスキップすることが可能なのでしょうか?

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

    返信先: 会員情報ページのカスタマイズ #72760
    JunichiK
    参加者

    yskysmr様、ご返信ありがとうございます。

    当方のスキルが低いため、正直よく分かりません。
    試しに下記のようにしてみましたら、不要な列の削除は出来ましたが、表の内容が反映されませんでした。

    add_filter( 'usces_filter_history_cart_row', 'my_filter_history_cart_row', 10 ,5 );
    function my_filter_history_cart_row() {
    $args = func_get_args();
    list($history_cart_row, $umhs, $cart_row, $i, $materials) = $args;
    
    			$history_cart_row = '<tr>
    				<td>' . ($i + 1) . '</td>
    				<td>';
    			$cart_thumbnail = '<a href="' . get_permalink($post_id) . '">' . wp_get_attachment_image( $pictid, array(60, 60), true ) . '</a>';
    			$history_cart_row .= apply_filters('usces_filter_cart_thumbnail', $cart_thumbnail, $post_id, $pictid, $i, $cart_row);
    			$history_cart_row .= '</td>
    				<td class="aleft"><a href="' . get_permalink($post_id) . '">' . esc_html($cartItemName) . '<br />' . $optstr . '</a>' . apply_filters('usces_filter_history_item_name', NULL, $umhs, $cart_row, $i) . '</td>
    				<td class="rightnum">' . usces_crform($skuPrice * $cart_row['quantity'], true, false, 'return') . '</td>
    				</tr>';
    			$materials = compact( 'cart_thumbnail', 'post_id', 'pictid', 'cartItemName', 'optstr' );
    
    return $history_cart_row;
    }

    引数や変数の宣言を加えたりも試行錯誤してみましたが、うまくいきません。
    ご教示のほどよろしくお願いいたします。

15件の投稿を表示中 - 16 - 30件目 (全47件中)