WooCommerce - 重复订单的不同运输方式
WooCommerce - Different shipping methods for recurring orders
我正在使用以下插件开发网站:
- WooCommerce
- WooCommerce 订阅
- Pakkelabels.dk 用于 WooCommerce
"Pakkelabels.dk" 是丹麦运营商的包装标签插件。此插件使用标准的 WooCommerce 过滤器和挂钩来添加其他运输方式。
我正在使用混合结账。购物车总数目前如下所示:
这是我不想做的
对于经常性订单,我不想将运输方式限制为 "DAO Pakkeshop" 和 "Local pick up"(抱歉图片中的丹麦语)。
我已将此添加到 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;
}
}
我的问题是,这会删除订单和重复订单的送货方式,如图所示。
我需要某种条件,这样我就可以只定位经常性订单发货方式并取消设置。
我怎样才能做到这一点?
好的 - 这是一个简单的修复。 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;
}
}
以上运输方式现在已针对重复购物车移除。
我的购物车总数现在如下所示:
我正在使用以下插件开发网站:
- WooCommerce
- WooCommerce 订阅
- Pakkelabels.dk 用于 WooCommerce
"Pakkelabels.dk" 是丹麦运营商的包装标签插件。此插件使用标准的 WooCommerce 过滤器和挂钩来添加其他运输方式。
我正在使用混合结账。购物车总数目前如下所示:
这是我不想做的
对于经常性订单,我不想将运输方式限制为 "DAO Pakkeshop" 和 "Local pick up"(抱歉图片中的丹麦语)。
我已将此添加到 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;
}
}
我的问题是,这会删除订单和重复订单的送货方式,如图所示。
我需要某种条件,这样我就可以只定位经常性订单发货方式并取消设置。
我怎样才能做到这一点?
好的 - 这是一个简单的修复。 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;
}
}
以上运输方式现在已针对重复购物车移除。
我的购物车总数现在如下所示: