首页 文章

删除“添加到购物车”按钮,而不删除Woocommerce产品附加组件

提问于
浏览
1

我使用WooCommerce产品附加插件来使用WooCommerce . 我看到很多答案删除了单个产品页面上的"add to cart"按钮 . They also remove WooCommerce product add-ons as well.

任何人都可以提供有关如何在删除“添加到购物车”按钮时添加“附加组件”的见解吗?

这是我必须删除“添加到购物车”按钮,但也删除加载项:

add_action( 'woocommerce_single_product_summary', 'remove_add_to_cart_buttons', 1 );

function remove_add_to_cart_buttons() {
    remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
}

1 回答

  • 1

    WooCommerce产品附加组件需要 woocommerce_before_add_to_cart_button 动作挂钩来显示所有附加组件字段和数据 .

    因此,下面的代码适用于简单和可变的产品,只需删除添加到购物车和数量字段,允许显示产品附加组件字段和数据 .

    add_action( 'woocommerce_single_product_summary', 'remove_add_to_cart_buttons', 1 );
    function remove_add_to_cart_buttons() {
        global $product;
    
        // For simple product types
        if( $product->is_type( 'simple' ) ) {
            remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
            add_action( 'woocommerce_single_product_summary', 'custom_before_single_add_to_cart', 30 );
        }
        // For variable product types (keeping attribute select fields)
        elseif( $product->is_type( 'variable' ) ) {
            remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20 );
        }
    }
    function custom_before_single_add_to_cart(){
        global $product;
    
        if ( ! $product->is_purchasable() ) return;
    
        // Simple Products
        if ( $product->is_in_stock() ) {
            do_action( 'woocommerce_before_add_to_cart_form' ); // (Optional)
    
            echo '<form class="cart" method="post" enctype="multipart/form-data">'; // (Optiona
    
                ## @since 2.1.0.
                do_action( 'woocommerce_before_add_to_cart_button' ); // <== NEEDED by Add-ons
    
                ## @since 3.0.0.
                do_action( 'woocommerce_before_add_to_cart_quantity' ); // Optional
    
                ## @since 3.0.0.
                do_action( 'woocommerce_after_add_to_cart_quantity' ); // Optional
    
                ## @since 2.1.0.
                do_action( 'woocommerce_after_add_to_cart_button' ); // Optional
    
            echo '</form>'; // Optional
    
            do_action( 'woocommerce_after_add_to_cart_form' ); // Optional
        }
    }
    

    代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中 .

    经过测试和工作 .

    删除添加到购物车按钮后,您将无法提交加载项数据

相关问题