首页 > 解决方案 > 可变产品的“添加到购物车”功能而不是“选择选项”按钮行为

问题描述

Woocommerce 在产品循环中有两种按钮类型


我的设置:

使用以下插件将所有 Woocommerce 产品同时配置为简单产品和订阅产品

现在所有产品上的按钮都从“添加到购物车”变为“选择选项”。这是 Woocommerce 的默认行为。


我的问题:

尽管有可变产品,如何保留“添加到购物车”按钮及其将简单产品添加到购物车的功能?

背后的逻辑:用户有机会在结账时做出选择,因此需要添加到购物车功能,而不是重定向到单个产品页面来做出选择。

标签: phpwordpresswoocommercehook-woocommerce

解决方案


您可以使用:(通过代码中添加的注释标签进行解释)

function filter_woocommerce_loop_add_to_cart_link( $args, $product ) {
    // Shop page & product type = simple
    if ( is_shop() && $product->product_type === 'simple' ) {
        // Get product ID, sku & add to cart url
        $product_id = $product->get_id();
        $product_sku = $product->get_sku();
        $product_url = $product->add_to_cart_url();

        // Quantity & text
        $quantity = isset( $args['quantity'] ) ? $args['quantity'] : 1;
        $text = $product->add_to_cart_text();

        $args = '<a rel="nofollow" href="' . $product_url . '" data-quantity="' . $quantity . '" data-product_id="' . $product_id . '" data-product_sku="' . $product_sku . '" class="button product_type_simple add_to_cart_button ajax_add_to_cart add-to-cart" aria-label="Add to cart"><em>' . $text . '</em></a>';
    }
    
    return $args; 
}
add_filter( 'woocommerce_loop_add_to_cart_link', 'filter_woocommerce_loop_add_to_cart_link', 10, 2 );

推荐阅读