WooCommerce,隐藏运输方式' s'当免费送货时

时间:2014-03-20 13:09:41

标签: hide woocommerce

我正在使用woocommerce,发现我可以在免费送货时隐藏送货方式。

但现在问题是我需要隐藏两个而不是一个。当我尝试隐藏两种方法时,整个页面都会变黑。

我需要专家帮我解决。提前感谢一百万!!

// Hide standard shipping option when free shipping is available
add_filter( 'woocommerce_available_shipping_methods', 'hide_standard_shipping_when_free_is_available' , 10, 1 );

/**
 *  Hide Standard Shipping option when free shipping is available
 * 
 * @param array $available_methods
 */
function hide_standard_shipping_when_free_is_available( $available_methods ) {

    if( isset( $available_methods['free_shipping'] ) AND isset( $available_methods['local_delivery'], ['flat_rate'] ) ) {

        // remove standard shipping option
        unset( $available_methods['local_delivery'], ['flat_rate'] );
    }

    return $available_methods;
}

3 个答案:

答案 0 :(得分:0)

我已经制作了一个高级免费送货选项的插件。这包括在免费提供时隐藏其他运输的选项。

您可能会喜欢它:http://wordpress.org/plugins/woocommerce-advanced-free-shipping/

答案 1 :(得分:0)

WooCommerce高级免费送货插件很好但是 免费送货时隐藏其他送货方式无效。 该插件可以在woocommerce管理员设置上启用,但检查隐藏其他送货方式的选项无法检查并保存。我尝试在WP选项db上覆盖它,但似乎它也不起作用。插件代码似乎有问题。

答案 2 :(得分:0)

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

function xa_hide_shipping_rates_when_free_is_available($rates, $package)
{
    global $woocommerce;
    $version = "2.6";
    if (version_compare($woocommerce->version, $version, ">=")) {
        foreach( $rates as $key => $rate ) {
            if ( 'free_shipping' === $rate->method_id ) {
                $free_shipping = $rates[$key];
                // Unset all rates.
                $rates = array();
                // Restore free shipping rate.
                $rates[$key] = $free_shipping;
                return $rates;
            }
        }
    }
    else {
        if (isset($rates['free_shipping'])) {
          // Below code is for unsetting single shipping method/option.
            // unset($rates['flat_rate']);
            $free_shipping = $rates['free_shipping'];
            // Unset all rates.
            $rates = array();
            // Restore free shipping rate.
        $rates['free_shipping'] = $free_shipping;
        }
    }

    return $rates;

有关详细信息,请参阅此link