如果产品在购物车中,则在woocommerce中添加类以添加到购物车按钮

时间:2018-08-15 03:52:57

标签: php wordpress woocommerce

我正在研究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样式

请帮助谢谢

1 个答案:

答案 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过滤器,则不建议使用此方法