programing

woocommerce에 커스텀 배송료를 추가하는 방법은?

newstyles 2023. 3. 15. 19:27

woocommerce에 커스텀 배송료를 추가하는 방법은?

woocommerce에서 코드를 사용하여 배송비를 추가하고 싶습니다.여기 제 요구 사항이 있습니다.

배송국이 호주라면 배송료가 다르고 호주 이외에서도 다릅니다.만약 나의 선적국이 호주이고

1. if order value is < 100, then shipping charge is $100 
2. if order value is > 100, then shipping charge is $0.

만약 나의 배송국이 호주 밖에 있고

 1. if order value is < 500, then shipping charge is $60
 2. if order value is > 500 and < 1000, then shipping charge is $50
 3. if order value is > 1000, then shipping charge is $0

따라서 체크아웃 페이지에서 배송 국가를 사용자가 변경할 때 위의 요구 사항에 따라 커스텀 배송료를 추가하는 방법은 무엇입니까?아래 코드를 시도했지만 주문 금액으로만 동작합니다.커스텀 플러그인에 아래 코드의 배송 국가를 추가하는 방법은 무엇입니까?

class WC_Your_Shipping_Method extends WC_Shipping_Method {
    public function calculate_shipping( $package ) {
    global $woocommerce;
        if($woocommerce->cart->subtotal > 5000) {
            $cost = 30; 
        }else{
            $cost = 3000;
      }
}
$rate = array(
    'id' => $this->id,
    'label' => $this->title,
    'cost' => $cost,
    'calc_tax' => 'per_order'
);

// Register the rate
$this->add_rate( $rate );

}

후크를 사용할 수 있는 배송비용으로 커스텀 플러그인을 만드는 것이 좋습니다.
먼저 커스텀 플러그인에서 'WC_Your_Shipping_Method' 클래스를 확장하고 다음과 같이 작동합니다.

public function calculate_shipping( $package ) {
    session_start();
    global $woocommerce;

    $carttotal = $woocommerce->cart->subtotal;
    $country = $_POST['s_country']; //$package['destination']['country'];

    if($country == 'AU')
    {
        if($carttotal > 100){
            $cost = 5;
        }else{
            $cost = 10;//10.00;
        }
    }
    else
    {
        if($carttotal < 500){
            $cost = 60;//60.00;
        }else if($carttotal >= 500 && $carttotal <= 1000){
            $cost = 50;//50.00;
        }else if($carttotal > 1000){
            $cost = 0;
        }
    }

    $rate = array(
        'id' => $this->id,
        'label' => 'Shipping',
        'cost' => $cost,
        'calc_tax' => 'per_order'
    );

    // Register the rate
    $this->add_rate( $rate );
}

먼저 관리자 이름으로 배송 방법을 'myship'으로 만듭니다.

테마 함수에 아래 코드를 추가합니다.php 파일

add_action('woocommerce_before_cart_table', 'discount_when_produts_in_cart');

function discount_when_produts_in_cart( ) {

    global $woocommerce;

 $coupon_code = 'myship';

    if( $woocommerce->cart->get_cart_total() > 500 ) {

        $coupon_code = 'myship';

   }

 else

 {

   $woocommerce->cart->remove_coupons(sanitize_text_field($coupon_code));

    $woocommerce->clear_messages();

 }

언급URL : https://stackoverflow.com/questions/27666501/how-to-add-custom-shipping-charge-in-woocommerce