この関数は下記URLの中で使っている関数です。
while(usces_have_skus())ループの中で利用できる関数は下記を利用して下さい。
業務パック割引(itemGpExp)メッセージの不具合を改善する
またカートページの中の業務パック割引マークやメッセージを変更する場合は下記を参照してください。
ここでは、foreachループの中で利用できる業務パック割引ルーチンを作成します。
1.開発方針
1.関数名と引数
関数名:my_itemGpExp_foreach($sku,$msg)
引数 | デフォルト値 | 備考 |
$sku | なし(指定必須) | SKUデータ |
$msg | ‘数量割引’ | 表示するメッセージ |
2.表示サンプル
上記はメッセージをデフォルトでCALLした場合です。
2.プログラム詳細
1.プログラム
func¥welcart¥itemフォルダの下に「my_itemGpExp_foreach.php」ファイルを作成し、下記を追加します。
<?php /***************************************************************************** foreachループの中で業務パック内容を表示するプログラム 引数 $sku:SKUデータ(必須) $title:表示するタイトル デフォルトは数量割引 *******************************************************************************/ function my_itemGpExp_foreach( $sku,$title='数量割引' ) { global $post, $usces; if($sku['gp'] == 0){return;} /* 業務パック非適用の場合は終了 */ $sku = $sku['code']; $post_id = $post->ID; $GpN1 = $usces->getItemGpNum1($post_id); /* 指定個数 */ $GpN2 = $usces->getItemGpNum2($post_id); $GpN3 = $usces->getItemGpNum3($post_id); $GpD1 = $usces->getItemGpDis1($post_id); /* 値引き率 */ $GpD2 = $usces->getItemGpDis2($post_id); $GpD3 = $usces->getItemGpDis3($post_id); $unit = $usces->getItemSkuUnit($post_id, $sku); /* 単位 */ $price = $usces->getItemPrice($post_id, $sku); /* 価格 */ if($GpN1 == 0 || $GpD1 == 0){return;} /* プライスダウン設定が無い場合は終了 */ if($unit == ''){$unit = '個';} /* 単位が未設定の時は個を利用 */ /* 値引き1のメッセージ作成 */ $price1 =number_format(round($price * (100 - $GpD1) / 100)); $max1 = $GpN2 - 1; if($GpN2 == 0){ $msg1 = $GpN1.$unit.'以上で '.$GpD1.' %引き:'.$price1.'円/'.$unit;} elseif($GpN1 != $max1){ $msg1 = $GpN1.'~'.$max1.$unit.'で '.$GpD1.' %引き:'.$price1.'円/'.$unit;} else{ $msg1 = $GpN1.$unit.'で '.$GpD1.' %引き:'.$price1.'円/'.$unit;} /* 値引き2のメッセージ作成 */ $price2 =number_format(round($price * (100 - $GpD2) / 100)); $max2 = $GpN3 - 1; if($GpN3 == 0 || $GpD3 == 0){ $msg2 = $GpN2.$unit.'以上で '.$GpD2.' %引き:'.$price2.'円/'.$unit;} elseif($GpN2 != $max2){ $msg2 = $GpN2.'~'.$max2.$unit.'で '.$GpD2.' %引き:'.$price2.'円/'.$unit;} else{ $msg2 = $GpN2.$unit.'で '.$GpD2.' %引き:'.$price2.'円/'.$unit;} /* 値引き3のメッセージ作成 */ $price3 =number_format(round($price * (100 - $GpD3) / 100)); $msg3 = $GpN3.$unit.'以上で '.$GpD3.' %引き:'.$price3.'円/'.$unit; ?> <div class='gp_box'> <div class='gp_title'><?php echo $title;?></div> <div class='gp_msg'> <div class='msg'><?php echo $msg1;?></div> <?php if($GpN2 != 0 & $GpD2 != 0):?> <div class='msg'><?php echo $msg2;?></div> <?php endif;?> <?php if($GpN3 != 0 & $GpD3 != 0):?> <div class='msg'><?php echo $msg3;?></div> <?php endif;?> </div> </div> <style> .gp_box{ display:flex; align-items:center; border:1px solid #999; width:90%; margin:0;padding:0;} .gp_title{ padding:2px 10px; font-weight:bold;} .gp_msg{ padding:2px 10px; text-align:right; border-left:1px solid #999;} </style> <?php } ?>
2.プログラムのロード
functions.phpに下記を記述します。
/* 個別商品関連関数の追加 */ get_template_part('func/welcart/item/my_itemGpExp_foreach'); /* 業務パック関数 */
3.上記関数の使い方
global $post, $usces;
$skus = $usces->get_skus($post->ID); /* SKUアレーの取得 */
foreach($skus as $id => $val):?>
my_itemGpExp_foreach($val,'数量割引');
endforeach;
■まず始めに$uscesの中からskuデータを取得します。そのskuデータをforeachを使ってループさせます。skuで数量割引がONの物だけ、数量割引データが表示されます。