WooCommerce - calculate_shipping 기능으로 카트 아이템의 배송 클래스를 얻는 방법
가입자를 위한 무료 배송이 가능한 WooCommerce 플러그인을 만들었습니다.최근 WooCommerce 업그레이드 후 고장이 난 것 같습니다.
특히 카트 아이템의 배송 클래스가 올바르게 취득되지 않을 수 있습니다.
여기 제 calculate_shipping code입니다.무엇이 잘못되었는지 조언해 주실 수 있나요?
/**
* Add free shipping option for customers in base country with an active subscription,
* but only if the cart doesn't contain an item with the 'heavy-item-shipping-class'.
*
* @access public
* @param mixed $package
* @return void
*/
public function calculate_shipping($package) {
global $woocommerce;
// Check country and subscription status
if (is_user_in_base_country() && does_user_have_active_subscription()) {
// This flag will be set to TRUE if cart contains heavy items
$disable_free_shipping = FALSE;
// Get cart items
$cart_items = $package['contents'];
// Check all cart items
foreach ($cart_items as $cart_item) {
// Get shipping class
$shipping_class = $cart_item['data']->shipping_class; // *** IS THIS THE RIGHT WAY TO GET THE SHIPPING CLASS ??? ***
// If heavy item, set flag so free shipping option is not made available
if ($shipping_class === 'heavy-item-shipping-class') {
// Set flag
$disable_free_shipping = TRUE;
// Enough
break;
}
}
// If appropriate, add the free shipping option
if ($disable_free_shipping === FALSE) {
// Create the new rate
$rate = array(
'id' => $this->id,
'label' => "Free Shipping",
'cost' => '0',
'taxes' => '',
'calc_tax' => 'per_order'
);
// Register the rate
$this->add_rate($rate);
}
else {
// Doesn't qualify for free shipping, so do nothing
}
}
}
업데이트:%package
어레이에 출하 클래스가 포함되어 있는 것을 알 수 있었습니다.[shipping_class:protected]
. (이전에는, 이것은,[shipping_class]
이 데이터를 추출할 수 있습니까?그렇지 않은 경우 올바른 방법은 무엇입니까?
해결책을 찾았어요이제 제품/아이템의 배송 클래스를 얻는 유일한 방법은 전화하는 것 같습니다.get_shipping_class()
그 위에 올려놔요.
그래서, 제 코드 조각에서, 위에, 저는...
$shipping_class = $cart_item['data']->shipping_class;
...에게...
$shipping_class = $cart_item['data']->get_shipping_class();
이게 다른 사람에게 도움이 되길 바라.:)
언급URL : https://stackoverflow.com/questions/28765743/woocommerce-how-to-get-shipping-class-of-cart-items-in-calculate-shipping-func
'programing' 카테고리의 다른 글
오류: 모듈 '@react-native-community/toolbar-android'를 확인할 수 없습니다. (0) | 2023.02.28 |
---|---|
소품을 유지하면서 React 및 TypeScript HTML 요소 확장 (0) | 2023.02.28 |
WP_Query에서 날짜별로 주문하는 방법? (0) | 2023.02.28 |
mongoDB/mongoose: 늘이 아닌 경우 고유 (0) | 2023.02.23 |
위치 'class path resource [application-dev.yml]에서 가져온 속성 'spring.profiles.active'가 잘못되었습니다. (0) | 2023.02.23 |