返信先: 【解決済】WCEX Yamato Numberへのカスタマイズが効かなくなった

フォーラム 拡張プラグイン 【解決済】WCEX Yamato Numberへのカスタマイズが効かなくなった 返信先: 【解決済】WCEX Yamato Numberへのカスタマイズが効かなくなった

#102175
suitchocolat
参加者

大変恐れ入りますが自己解決しました。
YamatoNumber.class.php内の make_individual_cart( $cart_org )をカスタマイズしており、本番環境のみ、そのコードに誤りがありました。

テスト環境

	public function make_individual_cart( $cart_org ) {
		
  		global $usces;
		$opt_shipping_charges = $usces->options['shipping_charge'];//送料設定の配列を取得

		$individual_cart = array();
		$normal_cart = array();
		$reizou_cart = array();
		$reitou_cart = array();

		foreach ( $cart_org as $org ) {
			$is_individual = false;
			$post_id = (int) $org['post_id'];
			$quantity = (int) $org['quantity'];
			$product = wel_get_product( $post_id );
			$is_individual = $product['itemIndividualSCharge'];
			if ( $is_individual ) {
				$org['quantity'] = 1;
				for ( $i = 0; $i < $quantity; $i++ ) {
					$individual_cart[] = array( $org );
				}
			} else {
				$normal_cart[] = $org;
			}
		}
		if ( ! empty( $normal_cart ) ) {
			foreach ( $normal_cart as $org){
				$post_id = (int) $org['post_id'];
				$product = wel_get_product( $post_id );
				$item_shipping_charge_id = $product['itemShippingCharge'];
				foreach($opt_shipping_charges as $opt_shipping_charge) {
    			if($item_shipping_charge_id == $opt_shipping_charge['id']) {
        			switch ( $opt_shipping_charge['name']){
						case '宅急便コンパクト(常温)':
							$reizou_cart[] = $org; 
							break;
						case 'クール便':
							$reizou_cart[] = $org; 
							break;
						case '宅急便(常温)':
							$reizou_cart[] = $org; 
							break;
						case 'クール便(冷凍)';
							$reitou_cart[] = $org; 
							break;
						default:
						}
        		break;
    			}
				}
			}
		if ( ! empty( $reizou_cart ) ) {
			$individual_cart[] = $reizou_cart;
		}
		if ( ! empty( $reitou_cart ) ) {
			$individual_cart[] = $reitou_cart;
		}
		}
		return $individual_cart;
	}

本番環境

	public function make_individual_cart( $cart_org ) {
		
  		global $usces;
		$opt_shipping_charges = $usces->options['shipping_charge'];//送料設定の配列を取得

		$individual_cart = array();
		$normal_cart = array();

		foreach ( $cart_org as $org ) {
			$is_individual = false;
			$post_id = (int) $org['post_id'];
			$quantity = (int) $org['quantity'];
			$product = wel_get_product( $post_id );
			$is_individual = $product['itemIndividualSCharge'];
			if ( $is_individual ) {
				$org['quantity'] = 1;
				for ( $i = 0; $i < $quantity; $i++ ) {
					$individual_cart[] = array( $org );
				}
			} else {
				$normal_cart[] = $org;
			}
		}
		if ( ! empty( $normal_cart ) ) {
			foreach ( $normal_cart as $org){
				$post_id = (int) $org['post_id'];
				$product = wel_get_product( $post_id );
				$item_shipping_charge_id = $product['itemShippingCharge'];
				foreach($opt_shipping_charges as $opt_shipping_charge) {
    			if($item_shipping_charge_id == $opt_shipping_charge['id']) {
        			switch ( $opt_shipping_charge['name']){
						case '宅急便コンパクト(常温)':
							$reizou_cart = array($org); 
							break;
						case 'クール便':
							$reizou_cart = array($org); 
							break;
						case '宅急便(常温)':
							$reizou_cart = array($org); 
							break;
						case 'クール便(冷凍)';
							$reitou_cart = array($org); 
							break;
						default:
						}
        		break;
    			}
				}
			}
		if ( ! empty( $reizou_cart ) ) {
			$individual_cart[] = $reizou_cart;
		}
		if ( ! empty( $reitou_cart ) ) {
			$individual_cart[] = $reitou_cart;
		}
		}
		return $individual_cart;
	}

当店では【常温】【冷蔵】【冷凍】の三温度帯の商品を扱っており、常温と冷蔵は同梱できるのですが、冷凍とその他の温度帯は同梱できず、伝票を2枚出力する必要があり、このようにカスタマイズしています。

プラグインのコードを直接編集するのは避けるべきと重々承知しているのですが、ここにフィルターフックが無かったので…
お騒がせして大変申し訳ありませんでした。
誠にありがとうございました。