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;

但这似乎并不奏效。

有没有其他不接触模板文件的方法?

以下将完成此操作(基于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文件中。测试并工作。

Related:删除";"添加到卡";WooCommerce 中的唯一主页

你试过if不是cart吗?

if (!is_cart()) :
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
endif;

最新更新