Woocommerce “将类添加到购物车”按钮(仅当它不是“选择选项”按钮时)

Woocommerce “将类添加到购物车”按钮(仅当它不是“选择选项”按钮时),woocommerce,Woocommerce,我正在尝试向“添加到购物车”按钮添加一个类 我可以通过woocmerce/loop/Add to cart.php 以下是我将add-to-cart.php文件更改为 /** * Loop Add to Cart * * @author WooThemes * @package WooCommerce/Templates * @version 2.1.0 */ if ( ! defined( 'ABSPATH' ) ) { exit; //

我正在尝试向“添加到购物车”按钮添加一个类

我可以通过
woocmerce/loop/Add to cart.php

以下是我将add-to-cart.php文件更改为

/**
 * Loop Add to Cart
 *
 * @author      WooThemes
 * @package     WooCommerce/Templates
  * @version     2.1.0
  */

 if ( ! defined( 'ABSPATH' ) ) {
     exit; // Exit if accessed directly
 }

 global $product;

 echo apply_filters( 'woocommerce_loop_add_to_cart_link',
     sprintf( '<div class="add-to-cart-container"><a href="%s" rel="nofollow" data-product_id="%s" data-product_sku="%s" data-quantity="%s" class="%s product_type_%s single_add_to_cart_button button alt ajax_add_to_cart"><i class="fa fa-shopping-cart"></i>&nbsp; %s</a></div>',
         esc_url( $product->add_to_cart_url() ),
         esc_attr( $product->id ),
         esc_attr( $product->get_sku() ),
         esc_attr( isset( $quantity ) ? $quantity : 1 ),
         $product->is_purchasable() && $product->is_in_stock() ? 'add_to_cart_button' : '',
         esc_attr( $product->product_type ),
         esc_html( $product->add_to_cart_text() )
     ),
 $product );
/**
*循环添加到购物车
*
*@author-WooThemes
*@package/Templates
*@version 2.1.0
*/
如果(!已定义('ABSPATH')){
exit;//如果直接访问,则退出
}
全球$产品;
回显应用过滤器('woocommerce\u loop\u add\u to\u cart\u link',
sprintf(“”,
esc_url($product->add_to_cart_url()),
esc_attr($product->id),
esc_attr($product->get_sku()),
esc_属性(isset($数量)?$数量:1),
$product->is_purchable()&&&$product->is_in_stock()?“添加到购物车按钮”:“,
esc_attr($product->product_type),
esc_html($product->add_to_cart_text())
),
$product);
我只希望
中的
ajax\u add\u to\u cart
类应用于简单产品,而不是带有“选择选项”文本按钮的可变产品。但我希望所有其他更改都应用于这两个按钮


如何做到这一点?

%s
替换
ajax\u添加到购物车
,并为您的
sprintf
函数再添加一个参数

sprintf( '<div class="add-to-cart-container"><a href="%s" rel="nofollow" data-product_id="%s" data-product_sku="%s" data-quantity="%s" class="%s product_type_%s single_add_to_cart_button button alt %s"><i class="fa fa-shopping-cart"></i>&nbsp; %s</a></div>',
     esc_url( $product->add_to_cart_url() ),
     esc_attr( $product->id ),
     esc_attr( $product->get_sku() ),
     esc_attr( isset( $quantity ) ? $quantity : 1 ),
     $product->is_purchasable() && $product->is_in_stock() ? 'add_to_cart_button' : '',
     esc_attr( $product->product_type ),
     $product->product_type == 'simple' ? 'ajax_add_to_cart' : '',
     esc_html( $product->add_to_cart_text() )
 ),
sprintf(“”,
esc_url($product->add_to_cart_url()),
esc_attr($product->id),
esc_attr($product->get_sku()),
esc_属性(isset($数量)?$数量:1),
$product->is_purchable()&&&$product->is_in_stock()?“添加到购物车按钮”:“,
esc_attr($product->product_type),
$product->product_type=='simple'?'ajax_add_to_cart':'',
esc_html($product->add_to_cart_text())
),

如何区分产品是简单的还是可变的?一些特定属性?我检查了添加到购物车按钮(“添加到购物车”和“选择选项”)。我确实知道可变产品(“选择选项”按钮)有一个类
产品类型\u变量
和一个简单产品(“添加到购物车”按钮)有一个类
product\u-type\u-simple
我为此做的一项工作是从
add-to-cart.php
文件中删除
ajax\u-add\u-to-cart
类,并使用jQuery将该类添加到正确的按钮$('.products.product\u-type\u-simple').addClass(“ajax\u-add-to-to-cart”);好吧,如果你确实可以访问PHP代码,我建议你按照我在回答中的建议去做。我认为这更简洁,因为您将把整个逻辑放在一个地方。
//假设$product->type作为type属性
$product->product\u type=='simple'?'ajax\u add\u to\u cart':'',
正在发挥作用!实际上,我将其更改为检查product类的条件,因为您说过这是判断它是简单的还是可变的正确方法:)编辑之前的第一个答案有效。只要它是
$product->product\u type
而不是
$product->type
很好,我会把它改回来的谢谢。非常感谢!