我正在研究woocommerce项目,如果已经在购物车中添加了产品,我想在“添加到购物车”按钮上添加一个新类,您能帮我找到这个问题吗?
我现在正在使用此代码进行更改
add_filter( 'woocommerce_product_single_add_to_cart_text', 'bbloomer_custom_add_cart_button_single_product' );
function bbloomer_custom_add_cart_button_single_product( $label ) {
foreach( WC()->cart->get_cart() as $cart_item_key => $values ) {
$product = $values['data'];
if( get_the_ID() == $product->get_id() ) {
$label = __('Added', 'woocommerce');
}
}
return $label; }
文本正在更改,但我想添加类,以便添加CSS样式
请帮助谢谢
答案 0 :(得分:0)
woocommerce/templates/loop/add-to-cart.php
中的添加到购物车模板具有过滤器。因此,我们还可以使用add_filter
中的functions.php
函数来覆盖类。
function woocommerce_custom_add_to_cart_class ( $html, $product, $args ) {
// Define the classes to be added
$class_to_append = "this_guys_in_cart";
// Check if product is in cart
$in_cart = WC()->cart->find_product_in_cart( WC()->cart->generate_cart_id( $product->get_id() ) );
if ( $in_cart != '' ) {
// Append the extra class
$args['class'] = $args['class']." {$class_to_append}";
$html = sprintf( '<a href="%s" data-quantity="%s" class="%s" %s>%s</a>',
esc_url( $product->add_to_cart_url() ),
esc_attr( isset( $args['quantity'] ) ? $args['quantity'] : 1 ),
esc_attr( isset( $args['class'] ) ? $args['class'] : 'button' ),
isset( $args['attributes'] ) ? wc_implode_html_attributes( $args['attributes'] ) : '',
esc_html( $product->add_to_cart_text() )
);
}
// Return Add to cart button
return $html;
}
add_filter( "woocommerce_loop_add_to_cart_link", "woocommerce_custom_add_to_cart_class", 10, 3 );
注意:如果在主题模板中修改了
add-to-cart.php
过滤器,则不建议使用此方法