wordpress Woocommerce 2.5:隐藏送货方式时,免费送货不再工作

zbsbpyhn  于 2023-01-16  发布在  WordPress
关注(0)|答案(2)|浏览(149)

我有这个密码

/* !Hide Shipping Options Woocommerce */

add_filter( 'woocommerce_available_shipping_methods', 'hide_shipping_based_on_tag' ,    10, 1 );

function check_cart_for_share() {

// load the contents of the cart into an array.
global $woocommerce;
$cart = $woocommerce->cart->cart_contents;

$found = false;

// loop through the array looking for the tag you set. Switch to true if the tag is found.
foreach ($cart as $array_item) {
    $term_list = wp_get_post_terms( $array_item['product_id'], 'product_tag', array( "fields" => "names" ) );

    if (in_array("Heavy",$term_list)) { // Replace "Heavy" with what ever tag you want

        $found = true;
        break;
    }
}

return $found;

}

function hide_shipping_based_on_tag( $available_methods ) {

// use the function above to check the cart for the tag.
if ( check_cart_for_share() ) {

    // remove the rate you want
    unset( $available_methods['flat_rate'] ); // Replace "flat_rate" with the shipping option that you want to remove.
}

// return the available methods without the one you unset.
return $available_methods;

}

在我的function.php -但由于woocommerce 2.5它不再工作了。其他运输方式需要隐藏时,免费送货可用。

iqjalb3h

iqjalb3h1#

您使用的是WooCommerce版本2.1及以下的钩子。
相反,请使用woocommerce_package_rates筛选器。

qc6wkl3g

qc6wkl3g2#

此代码工作完美的最新woocommerce:

add_filter( 'woocommerce_package_rates', 'hide_shipping_when_free_is_available', 10, 2 );

function hide_shipping_when_free_is_available( $rates, $package ) {

    // Only modify rates if free_shipping is present
    if ( isset( $rates['free_shipping'] ) ) {

        // To unset a single rate/method, do the following. This example unsets flat_rate shipping
        unset( $rates['flat_rate'] );

        // To unset all methods except for free_shipping, do the following
        $free_shipping          = $rates['free_shipping'];
        $rates                  = array();
        $rates['free_shipping'] = $free_shipping;
    }

    return $rates;
}

我已经取消了单位航运,你可以取消其他航运方式,如果你启用。这段代码对我来说很好,我昨天试过了。

相关问题