在研究了这个问题之后,我发现代码会将价格加到"添加到购物车"像这样的按钮:
[$ 50加入购物车]
由于某种原因,代码不使用ajax类,所以当单击按钮时页面会重新加载。普通的默认按钮将使用ajax类,因此当它被点击时,它不会重新加载页面,但会显示一条消息,表明它已被添加到购物车中。
我将文件add-to-cart.php重新添加到我的主题\ woocommerce \ loop \ add-to-cart.php
这里是不使用ajax类的代码:
echo apply_filters( 'woocommerce_loop_add_to_cart_link',
sprintf( '<a href="%s" rel="nofollow" data-product_id="%s" data-product_sku="%s" class="button product_type_simple add_to_cart_button ajax_add_to_cart">%s %s</a>',
esc_url( $product->add_to_cart_url() ),
esc_attr( $product->id ),
esc_attr( $product->get_sku() ),
$product->is_purchasable() ? 'add_to_cart_button' : '',
esc_attr( $product->product_type ),
$product->get_price_html(),
esc_attr( isset( $class ) ? $class : 'button' ),
esc_html( $product->add_to_cart_text() )
),
$product );
如何修改它以使用默认添加到购物车按钮的ajax类?
提前致谢
答案 0 :(得分:3)
根据我的经验,添加到购物车模板是一个非常危险的模板来覆盖。你没有说你正在使用哪个版本的WooCommerce,但我会假设2.5?我假设因为我帮助重写了WooCommerce ajax添加到购物车代码以触发.ajax_add_to_cart
类,因为它解决了我在使用Name Your Price and Subscriptions扩展时遇到的一个复杂问题。但是,由于您覆盖了模板,因此您无法获得2.5更新。
这是新的add-to-cart.php
template和更新的woocommerce_template_add_to_cart()
功能。
您可以通过阵列上的implode()
看到第一个传递给模板并在第二个模板中定义的类。因此,要将这段代码导入您的代码,您将得到:
echo apply_filters( 'woocommerce_loop_add_to_cart_link',
sprintf( '<a href="%s" rel="nofollow" data-product_id="%s" data-product_sku="%s" class="button product_type_simple add_to_cart_button ajax_add_to_cart">%s %s</a>',
esc_url( $product->add_to_cart_url() ),
esc_attr( $product->id ),
esc_attr( $product->get_sku() ),
implode( ' ', array_filter( array(
'button',
'product_type_' . $product->product_type,
$product->is_purchasable() && $product->is_in_stock() ? 'add_to_cart_button' : '',
$product->supports( 'ajax_add_to_cart' ) ? 'ajax_add_to_cart' : ''
) ) ),
esc_attr( $product->product_type ),
$product->get_price_html(),
esc_attr( isset( $class ) ? $class : 'button' ),
esc_html( $product->add_to_cart_text() )
),
$product );
尽管如此,我强烈建议您不要覆盖此模板。从您的代码中,我没有看到任何使其变得不同/自定义的修改,这基本上意味着您可以自己解决升级问题并且没有任何好处。
答案 1 :(得分:0)
Button已经有ajax_add_to_cart
类绑定Ajax调用。
只需确保您已启用Ajax添加到购物车按钮
转到Woocommerce > Settings > Products > Display
并检查Enable AJAX add to cart buttons on archives
此功能仅在您从产品存档页面添加产品时才有效,它不适用于产品单页。