我不确定任何数字的错误消息是如何显示的,因为在大多数脚本中,您都使用了替代结构if
声明和foreach
语句(使用:
而不是{}
) 然后在底部加入if(){}
内部if : endif
这是不允许的,请参阅此处了解更多信息:
http://php.net/manual/en/control-structures.alternative-syntax.php
我对您的代码进行了一些重构,但无法对其进行测试,因此请尝试一下:
add_action( \'woocommerce_check_cart_items\', \'check_total\' );
function check_total() {
// Only run in the Cart or Checkout pages
if( is_cart() || is_checkout() ) {
global $woocommerce, $product;
$total_quantity = 0;
$display_notice = 1;
$i = 0;
//loop through all cart products
foreach ( $woocommerce->cart->cart_contents as $product ) {
// See if any product is from the cuvees category or not
if ( has_term( \'cuvees\', \'product_cat\', $product[\'product_id\'] )) {
$total_quantity += $product[\'quantity\'];
}
}
// Set up the acceptable totals and loop through them so we don\'t have an ugly if statement below.
$acceptable_totals = array(1, 2, 3, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 72, 96, 120);
foreach($acceptable_totals as $total_check) {
if ( $total_check == $total_quantity ) { $display_notice = 0; }
}
foreach ( $woocommerce->cart->cart_contents as $product ) {
if ( has_term( \'cuvees\', \'product_cat\', $product[\'product_id\'] ) ) {
if( $display_notice == 1 && $i == 0 ) {
// Display our error message
wc_add_notice( sprintf( \'<h5 style="letter-spacing:0.5px;color:white;text-align:center;">/!\\ Une commande de %d bouteilles n'est pas possible ! /!\\ </h5><br /> <br /><p style="text-align:center;"> L'envoi n'est possible que pour 1 | 2 | 3 | 6 | 12 | 18 | 24 | 30 | 36 | 42 | 48 | 54 | 60 | 72 | 96 | 120 et plus bouteilles.</p>\', $total_quantity),
\'error\' );
}
$i++;
}
}
}
}
编辑-显示通知逻辑中的小错误。
EDIT2-更新代码以在错误消息中返回当前产品数。