WooCommerce-定期订单的不同送货方式

时间:2018-08-28 11:11:35

标签: php wordpress woocommerce woocommerce-subscriptions

我正在开发具有以下插件的网站:

  • WooCommerce
  • WooCommerce订阅
  • 用于WooCommerce的Pakkelabels.dk

“ Pakkelabels.dk”是丹麦运营商的包装标签插件。该插件正在使用标准的WooCommerce过滤器和挂钩来添加其他送货方式。

我正在使用混合结帐。当前的购物车总数如下:

enter image description here

这是我不想做的

对于重复订单,我不会将运输方式限制为仅“ DAO Pakkeshop”和“本地取件”(图片中的丹麦语表示抱歉)。

我已将其添加到functions.php中,当购物车中有特定的产品ID(订阅产品)时,它将取消我不想使用的运输方式:

add_filter( 'woocommerce_package_rates', 'hide_shipping_methods_woo_sg', 10, 2 );
function hide_shipping_methods_woo_sg( $rates, $package ) {

    $product_id = get_field('product_auto_cart', 'option');

    if($product_id){
        $product_cart_id = WC()->cart->generate_cart_id( $product_id );
        $in_cart = WC()->cart->find_product_in_cart( $product_cart_id );

        if($in_cart) {
            unset( $rates['pakkelabels_shipping_dao_direct'] );
            unset( $rates['pakkelabels_shipping_gls_private'] );
            unset( $rates['pakkelabels_shipping_gls_business'] );
            unset( $rates['pakkelabels_shipping_gls'] );
            unset( $rates['pakkelabels_shipping_pdk'] );
            unset( $rates['pakkelabels_shipping_postnord_private'] );
            unset( $rates['pakkelabels_shipping_postnord_business'] );
            // unset( $rates['local_pickup:19'] );
        }
        return $rates;
    }
}

我的问题是,这消除了订单和重复订单的送货方式,如您在图像上看到的那样。

我需要某种条件的,因此我可以仅针对重复订单运送方法并取消设置这些方法。

我该如何实现?

1 个答案:

答案 0 :(得分:0)

好的-那是一个简单的解决方法。 WC()->cart->recurring_carts是我需要的条件。我的代码现在看起来像这样:

add_filter( 'woocommerce_package_rates', 'hide_shipping_methods_woo_sg', 10, 2 );
function hide_shipping_methods_woo_sg( $rates, $package ) {

    $product_id = get_field('product_auto_cart', 'option');

    if($product_id){
        $product_cart_id = WC()->cart->generate_cart_id( $product_id );
        $in_cart = WC()->cart->find_product_in_cart( $product_cart_id );

        if($in_cart && WC()->cart->recurring_carts) {
            unset( $rates['pakkelabels_shipping_dao_direct'] );
            unset( $rates['pakkelabels_shipping_gls_private'] );
            unset( $rates['pakkelabels_shipping_gls_business'] );
            unset( $rates['pakkelabels_shipping_gls'] );
            unset( $rates['pakkelabels_shipping_pdk'] );
            unset( $rates['pakkelabels_shipping_postnord_private'] );
            unset( $rates['pakkelabels_shipping_postnord_business'] );
            // unset( $rates['local_pickup:19'] );
        }
        return $rates;
    }
}

现在,针对反复使用的购物车,上述送货方式已被删除。

我的购物车总计现在看起来像这样:

enter image description here