woocommerce用ajax类添加价格到购物车按钮

时间:2016-01-30 16:36:31

标签: php wordpress woocommerce

在研究了这个问题之后,我发现代码会将价格加到"添加到购物车"像这样的按钮:

[$ 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类?

提前致谢

2 个答案:

答案 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

此功能仅在您从产品存档页面添加产品时才有效,它不适用于产品单页。

参考:Configuring Woocommerce Settings