我正在努力更改默認選擇的運輸選項。“免費送貨”送貨選項僅在客戶購物車中的金額超過 70 美元時才會顯示。如果購物車上的金額低于 70 美元,送貨選項將不會顯示在送貨選項上。
如果客戶有超過 70 美元或更多,將顯示“免費送貨”選項,它應該是默認選擇的送貨選項。
我嘗試添加以下代碼段,但它似乎對我不起作用,或者可能在修改 ID 時出錯(不確定)。
add_action( 'woocommerce_before_cart', 'set_default_chosen_shipping_method', 5 );
function set_default_chosen_shipping_method(){
//
if( count( WC()->session->get('shipping_method_0')['rates'] ) > 0 ){
foreach( WC()->session->get('shipping_method_0')['rates'] as $rate_id =>$rate)
if($rate->method_id == 'free_shipping30'){
$default_rate_id = array( $rate_id );
break;
}
WC()->session->set('chosen_shipping_methods', $default_rate_id );
}
}
我在

先感謝您!!
uj5u.com熱心網友回復:
您的代碼包含一些錯誤
- 替換
WC()->session->get('shipping_method_0')['rates']為WC()->session->get( 'shipping_for_package_0')['rates'] - 替換
if($rate->method_id == 'free_shipping30'){為if ( $rate->method_id == 'free_shipping' ) {
所以你得到:
function action_woocommerce_before_cart() {
// NOT empty (get)
if ( count( WC()->session->get( 'shipping_for_package_0')['rates'] ) > 0 ) {
// Loop through
foreach ( WC()->session->get('shipping_for_package_0')['rates'] as $rate_id => $rate ) {
// For free shipping
if ( $rate->method_id == 'free_shipping' ) {
$default_rate_id = array( $rate_id );
break;
}
}
// Set
WC()->session->set( 'chosen_shipping_methods', $default_rate_id );
}
}
add_action( 'woocommerce_before_cart', 'action_woocommerce_before_cart', 10, 0 );
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/334763.html
標籤:php WordPress的 求购 钩子商务 邮寄方式
