您不需要为此修改模板文件,而是可以使用WooCommerce挂钩woocommerce_after_add_to_cart_button
. 此挂钩将在“添加到购物车”按钮后添加内容。
如果客户点击这个按钮,产品应该被添加到购物车中,客户应该被发送到结帐页面,对吗?!
基本上,您可以通过以下链接将产品添加到购物车:
http://example.com/cart/?add-to-cart=<product ID>
因此,使用上面提到的钩子,并记住此URL,我们可以使用此代码段添加第二个按钮:
function add_content_after_addtocart() {
// get the current post/product ID
$current_product_id = get_the_ID();
// get the product based on the ID
$product = wc_get_product( $current_product_id );
// get the "Checkout Page" URL
$checkout_url = WC()->cart->get_checkout_url();
// run only on simple products
if( $product->is_type( \'simple\' ) ){
echo \'<a href="\'.$checkout_url.\'?add-to-cart=\'.$current_product_id.\'" class="single_add_to_cart_button button alt">Checkout</a>\';
}
}
add_action( \'woocommerce_after_add_to_cart_button\', \'add_content_after_addtocart\' );
这将在单个产品页面上的“添加到购物车”按钮之后添加一个按钮。如您所见,我还添加了一个检查,以查看当前产品是否为简单产品。如果您想将其与变体一起使用,则更加困难。使用这些产品,您需要生成如下URL:
http://example.com/cart/?add-to-cart=123&variation_id=456&attribute_pa_colour=black
可能您还需要选中默认的WooCommerce选项
Enable AJAX Add to cart
(WooCommerce>Products>Display)。我没有用这个设置测试它。
<小时>Update 包括数量
如果要添加数量,还可以将参数附加到按钮URL,如下所示:
http://example.com/cart/?add-to-cart=<product ID>&quantity=<number of quantity>
但是,由于客户可以使用WooCommerce输入字段更改数量,因此我们需要一种方法来获取此字段的当前值。
所以我们有多种选择,
收听数量字段上的更改事件以更新我们的URL,
或将数量字段的当前值附加到URL,前提是单击了自定义按钮。
以下代码使用第二种方法,仅当单击按钮时,才会添加参数。
内部if( $product->is_type( \'simple\' ) )
函数,在echo之前,输入以下脚本:
<script>
jQuery(function($) {
<?php /* if our custom button is clicked, append the string "&quantity=", and also the quantitiy number to the URL */ ?>
// if our custom button is clicked
$(".custom-checkout-btn").on("click", function() {
// get the value of the "href" attribute
$(this).attr("href", function() {
// return the "href" value + the string "&quantity=" + the current selected quantity number
return this.href + \'&quantity=\' + $(\'input.qty\').val();
});
});
});
</script>
我没有在上面的代码中包含停止和启动PHP标记!因此,您需要在(?>)之前结束PHP,然后在脚本之后再次启动它(