检查 WooCommerce 购物车页面上是否启用了特定的送货方式

Check if specific shipping method is enabled on WooCommerce cart page

在 WooCommerce 购物车页面中,我使用下面的代码检查是否启用了特定的送货方式,但 if 语句的条件始终为真,因此它不起作用。

    global $woocommerce;
    $shipping_methods = $woocommerce->shipping->load_shipping_methods();
    if ( $shipping_methods['free_shipping']->enabled == "yes" ) {

    }

如果启用了特定的送货方式,我如何在购物车页面上查看?

如果在当前送货区域的 WooCommerce 送货设置中启用了“free_shipping”送货方式,方法 enabled() 将是 yes,这就是原因你总是得到“是”…

要检查 WC_Cart 对象,您将使用 WC_Session 相关数据。以下是“免运费”送货方式的示例:

// Get available shipping methods
$shipping_for_package_0 = WC()->session->get('shipping_for_package_0');
$found = false;

if( isset($shipping_for_package_0['rates']) && ! empty($shipping_for_package_0['rates']) ) {
    // Loop through available shipping methods rate data
    foreach( $shipping_for_package_0['rates'] as $rate ) {
        // Targeting "Free Shipping"
        if( 'free_shipping' === $rate->method_id ) {
            $found = true;
            break;
        }
    }
}

// Display availability for "Free shipping"
echo $found ? 'Free shipping is available.' : 'Free shipping is not available.';

但如果客户在购物车页面上进行更改,则不会在购物车页面上刷新。