[WordPress] WooCommerce – calculate_shipping 関数でカート アイテムの出荷クラスを取得する方法?

スポンサーリンク

質問

加入者の送料無料を有効にする WooCommerce プラグインを作成しました。最近 WooCommerce アップグレード後が壊れているようです

具体的には、問題に思えることカート項目の出荷クラスがされて正しく検索されません

ここで私 calculate_shipping コード – 何が間違っている誰もが助言することができますか?

/**
 * 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

        }

    }

}
[shipping_class:protected]

の下でクラスの

更新

%package

配列を見てきたし、出荷されていることに気づいた。(以前は、このする必要がありますされている

[shipping_class]

。)このデータを抽出する可能ですか?そうでなかったら、それを行うための正しい方法は何ですか?

答え

私は解決策を見つけた。今、それに対して

get_shipping_class()

を呼び出すには、製品/品目の出荷クラスを取得する唯一の方法だ

だから、私のコードで上記の変えました.

$shipping_class = $cart_item['data']->shipping_class;

…to…

$shipping_class = $cart_item['data']->get_shipping_class();

うまくいけば、これは他の誰かを助けるです:)

http://stackoverflow.com/questions/28765743/woocommerce-how-to-get-shipping-class-of-cart-items-in-calculate-shipping-func

スポンサーリンク

Leave a Reply