WooCommerce用最簡單的方式實現不同溫層結帳
不同溫層結帳方式,參考某S租用平台的作法,不同溫層就不能結帳 XD
// 添加鉤子,用於檢查購物車中的運送類別
add_action('woocommerce_check_cart_items', 'check_shipping_classes_before_checkout');
function check_shipping_classes_before_checkout() {
$cart_shipping_classes = array();
$items = WC()->cart->get_cart();
// 收集購物車中各個商品的運送類別
foreach ($items as $item_key => $item) {
$product = $item['data'];
$shipping_class = $product->get_shipping_class();
if (!in_array($shipping_class, $cart_shipping_classes)) {
$cart_shipping_classes[] = $shipping_class;
}
}
// 如果購物車中有多個不同的運送類別,則阻止結帳
if (count($cart_shipping_classes) > 1) {
wc_add_notice('抱歉,您無法在購物車中有不同的運送類別時進行結帳。', 'error');
remove_action('woocommerce_proceed_to_checkout', 'woocommerce_button_proceed_to_checkout', 20);
}
}
設定WooCommerce的運送類別
/wp-admin/admin.php?page=wc-settings&tab=shipping§ion=classes
常溫、冷凍、冷藏 (代稱使用英文)
寫完後每個商品的運費就依照運送類別去填寫
把上面的語法放到程式碼片段,打完收工
順利的話就會使用者的購物車如有不同溫層的商品就無法結帳囉
// 添加鉤子,用於檢查購物車中的運送類別
add_action('woocommerce_check_cart_items', 'check_shipping_classes_before_checkout');
function check_shipping_classes_before_checkout() {
$cart_shipping_classes = array();
$items = WC()->cart->get_cart();
// 收集購物車中各個商品的運送類別
foreach ($items as $item_key => $item) {
$product = $item['data'];
$shipping_class = $product->get_shipping_class();
if (!in_array($shipping_class, $cart_shipping_classes)) {
$cart_shipping_classes[] = $shipping_class;
}
}
// 如果購物車中有多個不同的運送類別,則阻止結帳
if (count($cart_shipping_classes) > 1) {
wc_add_notice('抱歉,您無法在購物車中有不同的運送類別時進行結帳。', 'error');
remove_action('woocommerce_proceed_to_checkout', 'woocommerce_button_proceed_to_checkout', 20);
}
}
設定WooCommerce的運送類別
/wp-admin/admin.php?page=wc-settings&tab=shipping§ion=classes
常溫、冷凍、冷藏 (代稱使用英文)
寫完後每個商品的運費就依照運送類別去填寫
把上面的語法放到程式碼片段,打完收工
順利的話就會使用者的購物車如有不同溫層的商品就無法結帳囉
留言