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

时间:2017-12-07 17:42:35

标签: php wordpress woocommerce product custom-fields

我使用WooCommerce产品附加插件来使用WooCommerce。我看到很多答案删除了单个产品页面上的“添加到购物车”按钮。 他们也会删除WooCommerce产品附加组件。

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

以下是我必须删除“添加到购物车”按钮,但也删除了附加组件:

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 个答案:

答案 0 :(得分: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文件中,或者放在任何插件文件中。

经过测试和工作。

  

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