2 回答

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊
您應(yīng)該為每個(gè)代碼片段使用不同的函數(shù)名稱,但最好的方法是將所有內(nèi)容合并到一個(gè)唯一的函數(shù)中。
以下是使其在獨(dú)特功能中工作的方法(對(duì)于來自特定運(yùn)輸方式的物品):
當(dāng)購物車中有 4 件或更少的商品時(shí)隱藏一些運(yùn)輸方式
當(dāng)購物車中有 4 件或更少的商品時(shí)隱藏一些其他運(yùn)輸方式
代碼:
add_filter( 'woocommerce_package_rates', 'show_hide_shipping_methods_based_on_shipping_class', 10, 2 );
function show_hide_shipping_methods_based_on_shipping_class( $rates, $package ) {
$targeted_class_ids = array(182); // Shipping Class To Find
$allowed_max_qty = 4; // Max allowed quantity for the shipping class
$shipping_rates_ids1 = array( // Shipping Method rates Ids To Hide if more than 4 items are in cart
'wf_shipping_ups:07',
'wf_shipping_ups:08',
'wf_shipping_ups:11',
'wf_shipping_ups:54',
'wf_shipping_ups:65',
'wf_shipping_ups:70',
'wf_shipping_ups:74',
'free_shipping:2',
'request_shipping_quote',
);
$shipping_rates_ids2 = array( // Shipping Method rates Ids to Hide if 4 or less items are in cart
'flat_rate:20',
'flat_rate:20',
);
$related_total_qty = 0; // Initializing
// Checking cart items for current package
foreach( $package['contents'] as $key => $cart_item ) {
if( in_array( $cart_item['data']->get_shipping_class_id(), $targeted_class_ids ) ){
$related_total_qty += $cart_item['quantity'];
}
}
// When total allowed quantity is more than allowed (for items from defined shipping classes)
if ( $related_total_qty > $allowed_max_qty ) {
// Hide related defined shipping methods (more than 4 items)
foreach( $shipping_rates_ids1 as $shipping_rate_id ) {
if( isset($rates[$shipping_rate_id]) ) {
unset($rates[$shipping_rate_id]); // Remove Targeted Methods
}
}
} else {
// Hide related defined shipping methods (4 or less items)
foreach( $shipping_rates_ids2 as $shipping_rate_id ) {
if( isset($rates[$shipping_rate_id]) ) {
unset($rates[$shipping_rate_id]); // Remove Targeted Methods
}
}
}
return $rates;
}
代碼位于活動(dòng)子主題(或活動(dòng)主題)的functions.php 文件中。未經(jīng)測(cè)試它應(yīng)該有效。
刷新運(yùn)輸緩存:
此代碼已保存在您的functions.php 文件中。
在運(yùn)輸區(qū)域設(shè)置中,禁用/保存任何運(yùn)輸方式,然后啟用返回/保存。
你已經(jīng)完成了,你可以測(cè)試它。
處理物品數(shù)量而不是物品累計(jì)數(shù)量:
代替:
$related_total_qty += $cart_item['quantity'];
經(jīng)過
$related_total_qty++;

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超4個(gè)贊
我假設(shè)您已經(jīng)通過依次編寫這兩個(gè)代碼片段來組合它們。
由于您兩次使用相同的函數(shù)名稱,因此出現(xiàn)錯(cuò)誤:無法重新聲明......
因此,您可以嘗試通過重命名第二個(gè)片段的函數(shù)名稱來修復(fù)它,如下所示 -
add_filter( 'woocommerce_package_rates', 'hide_shipping_method_based_on_shipping_class_logic_2', 10, 2 );
function hide_shipping_method_based_on_shipping_class_logic_2( $rates, $package ) {
// other stuffs
}
- 2 回答
- 0 關(guān)注
- 139 瀏覽
添加回答
舉報(bào)