为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
翻阅古今 2023-08-06 10:37:07
我想删除除购物车本身之外的每个页面上的“添加到购物车”按钮。我找到了一个用钩子移除购物车按钮的解决方案: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;但这似乎不起作用。有没有其他方法而不触及模板文件?
查看完整描述

2 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

下面的代码可以解决这个问题(基于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 文件中。经过测试并有效。



查看完整回答
反对 回复 2023-08-06
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

如果不是购物车,您尝试过吗?


if (!is_cart()) :

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

endif;


查看完整回答
反对 回复 2023-08-06
  • 2 回答
  • 0 关注
  • 67 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信