首页 文章

当产品在Woocommerce中的购物车中时,更改添加到购物车按钮样式

提问于
浏览
1

我的添加到购物车按钮中有一个图标(而不是文字) . 我在add-to-cart.php文件中添加了一个图标类到add-to-cart锚点,如下所示:

echo apply_filters( 'woocommerce_loop_add_to_cart_link',
    sprintf( '<a rel="nofollow" href="%s" data-quantity="%s" data-product_id="%s" data-product_sku="%s" class="%s fa fa-cart-plus">%s</a>'

如果物品已装入购物车,我想改变颜色 .
我有一个函数来获得一个没有任何文本的添加到购物车按钮,我也得到了购物车中的商品ID:

add_filter( 'woocommerce_product_add_to_cart_text', 'woo_archive_custom_cart_button_text' );    // 2.1 +
function woo_archive_custom_cart_button_text() {

    global $woocommerce;

    foreach($woocommerce->cart->get_cart() as $cart_item_key => $values ) {
        $_product = $values['data'];

        if( get_the_ID() == $_product->id ) {
            return __('', 'woocommerce');   
         }
    }
    return __( '', 'woocommerce' );

这很棒,但出于某种原因,我想不出用这种新信息改变图标风格的方法 . 我试图“回应”一种新风格,但我不知道如何与css(或jquery)中的产品ID相关联 . 有任何想法吗?


*可能有不同的方法来做到这一点 . 当一个项目被添加到购物车时,添加到购物车的锚点有一个新的类 - “添加”,所以我可以用css轻松地自定义它,它可以工作,但只有当项目是被添加 . 刷新页面后它不存在,因此我所做的自定义不再受影响 .

1 回答

  • 1

    您应该直接在模板_2427158中进行一些更改,并将其替换为:

    if ( ! defined( 'ABSPATH' ) ) {
        exit;
    }
    
    global $product;
    
    // Your icon class is now here
    $add_class = ' fa fa-cart-plus';
    
    // Loop through cart items
    foreach( WC()->cart->get_cart() as $cart_item )
        // If the product is in cart
        if( $product->get_id() == $cart_item['product_id'] ) {
            $add_class .= ' is-added'; // We add an additional class
            break;
        }
    
    $add_to_cart_text = '';
    
    echo apply_filters( 'woocommerce_loop_add_to_cart_link',
        sprintf( '<a rel="nofollow" href="%s" data-quantity="%s" data-product_id="%s" data-product_sku="%s" class="%s">%s</a>',
            esc_url( $product->add_to_cart_url() ),
            esc_attr( isset( $quantity ) ? $quantity : 1 ),
            esc_attr( $product->get_id() ),
            esc_attr( $product->get_sku() ),
            esc_attr( isset( $class ) ? $class : 'button' ) . $add_class,
            $add_to_cart_text
        ),
    $product );
    

    这将为您的按钮添加一个额外的 is-added ,您将能够使用CSS进行颜色更改 . 这是经过测试和运作的 .

    你将不再需要你的功能 woo_archive_custom_cart_button_text() ...

相关问题