提问者:小点点

更改添加到购物车按钮样式时,产品在购物车在WooCommerce


我的“添加到购物车”按钮中有一个图标(而不是文本)。我在“添加到购物车”中添加了。php文件是添加到购物车锚点的图标类,如下所示:

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关联。有什么想法吗?

*可能有另一种方法可以做到这一点。当一个项目被添加到购物车时,“添加到购物车”锚点有一个新的类“added”,因此我可以用css轻松地对其进行自定义,并且可以正常工作,但是“added”类只有在项目被添加时才存在。刷新页面后,该页面不存在,因此我所做的自定义操作不再影响。


共1个答案

匿名用户

您应该需要在模板循环/add-to-cart.php中直接进行一些更改,替换为:

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 );

这将在按钮中添加一个附加的,您可以使用CSS对其进行颜色更改。这是测试和工作。

你将不再需要你的函数woo_archive_custom_cart_button_text()...