仅当购物车包含类别时才显示WooCommerce Checkout模板

时间:2017-06-21 06:29:56

标签: woocommerce checkout

我们有一个WooCommerce多步结帐。一个结账步骤是保险,但此保险仅适用于租赁类别。

如果租车产品在购物车中,则只显示保险步骤。在Checking if the WooCommerce Cart Contains a Product Category上发现了一篇很棒的文章,但是当我们将add_action片段加载到结帐步骤时,代码没有提供所需的结果:

enter image description here

以下是我们对自定义模板的add_action调用(

add_action('woocommerce_multistep_checkout_after_shipping', 'add_my_insurance_step_with_new_field');
        function add_my_insurance_step_with_new_field( $checkout ) {
                wc_get_template( 'checkout/insurance.php', array( 'checkout' => $checkout ) );
            }

这里放置在SkyVerge的代码中:

// set our flag to be false until we find a product in that category
$cat_check = false;

// check each cart item for our category
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {

    $product = $cart_item['data'];

    // replace 'membership' with your category's slug
    if ( has_term( 'rentals', 'product_cat', $product->id ) ) {
        $cat_check = true;
        // break because we only need one "true" to matter here
        break;
    }
}

// if a product in the cart is in our category, do something
if ( $cat_check ) {
    // we have the category, do what we want
    add_action('woocommerce_multistep_checkout_after_shipping', 'add_my_insurance_step_with_new_field');
        function add_my_insurance_step_with_new_field( $checkout ) {
                wc_get_template( 'checkout/insurance.php', array( 'checkout' => $checkout ) );
            }
}

非常接近!不确定会出现什么问题。

感谢您的帮助, -L

1 个答案:

答案 0 :(得分:0)

这就解决了问题。将$cat_check设置为false,浏览购物车中的每件商品,检查购物车中是否有我们的类别slug(rentals),如果为true,我们会突破并运行下一个{{ 1}}陈述。

获取模板文件并在结帐订单信息(if)之前加载。

woocommerce_multistep_checkout_before_order_info

希望能帮助别人。 **或者如果我的代码有任何问题,请告诉我。谢谢!