WooCommerce:删除存档上但不在购物车中的“添加到购物车”按钮

我想删除除购物车本身之外的每个页面上的“添加到购物车”按钮。


我找到了一个用钩子移除购物车按钮的解决方案:


remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );

工作正常,但到处都删除了按钮。


我尝试使用此代码来删除除购物车之外的所有位置的按钮:


if (!is_cart()) :

    remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );

endif;

但这似乎不起作用。


有没有其他方法而不触及模板文件?


翻阅古今
浏览 104回答 2
2回答

慕婉清6462132

下面的代码可以解决这个问题(基于woocommerce_template_loop_add_to_cart()原始函数代码):add_action('init', 'remove_add_to_cart_function_callback' );function remove_add_to_cart_function_callback() {    remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );    add_action( 'woocommerce_after_shop_loop_item', 'custom_template_loop_add_to_cart', 10 );}if ( ! function_exists( 'woocommerce_template_loop_add_to_cart' ) ) {    function custom_template_loop_add_to_cart( $args = array() ) {        global $product;        if ( $product && is_cart() ) {            $defaults = array(                'quantity'   => 1,                'class'      => implode(                    ' ',                    array_filter(                        array(                            'button',                            'product_type_' . $product->get_type(),                            $product->is_purchasable() && $product->is_in_stock() ? 'add_to_cart_button' : '',                            $product->supports( 'ajax_add_to_cart' ) && $product->is_purchasable() && $product->is_in_stock() ? 'ajax_add_to_cart' : '',                        )                    )                ),                'attributes' => array(                    'data-product_id'  => $product->get_id(),                    'data-product_sku' => $product->get_sku(),                    'aria-label'       => $product->add_to_cart_description(),                    'rel'              => 'nofollow',                ),            );            $args = apply_filters( 'woocommerce_loop_add_to_cart_args', wp_parse_args( $args, $defaults ), $product );            if ( isset( $args['attributes']['aria-label'] ) ) {                $args['attributes']['aria-label'] = wp_strip_all_tags( $args['attributes']['aria-label'] );            }            wc_get_template( 'loop/add-to-cart.php', $args );        }    }}代码位于活动子主题(或活动主题)的functions.php 文件中。经过测试并有效。

至尊宝的传说

如果不是购物车,您尝试过吗?if (!is_cart()) :    remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );endif;
打开App,查看更多内容
随时随地看视频慕课网APP