众所周知woocommerce的产品页面只有add to cart添加购物车的功能,但是Buy now立即购买的按钮是没有的,本文就是通过纯代码的方式实现添加Buy now立即购买按钮的功能。
温馨提示:
文中的方法还没有尽善尽美,两段代码都还存在bug,这些天也翻了不少资料都没能完美解决这个问题,没想到一个小小的按钮竟然让网上不少人都没有办法。后续找到完美方法会持续更新。
第一种方法,直接上代码
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' ) ){
?>
<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
echo '<a href="'.$checkout_url.'?add-to-cart='.$current_product_id.'" class="single_add_to_cart_button button alt">Buy now</a>';
}
}
add_action( 'woocommerce_after_add_to_cart_button', 'add_content_after_addtocart' );
该段代码缺陷是,每次点击Buy now按钮都只能添加一个产品到结算页面,更换代码依然不能修复问题。
第二种方法代码
function wpcoderpro_direct_checkout_button() {
global $product;
$id = $product->get_id();
if( $product->is_type( 'variable' ) ){
echo '
<script>
jQuery(document).ready(function($){
$(".redirect_to_checkout").click(function(){
$("button.single_add_to_cart_button ").click();
window.location.href="/checkout/";
});
});
</script>
<div class="button alt redirect_to_checkout" style="cursor:pointer;">Buy now</div>
';
}
elseif( $product->is_type( 'simple' ) ){
echo '
<script>
jQuery(document).ready(function($){
$(".input-text.qty").change(function(){
$(".redirect_to_checkout a").attr("href", "/checkout/?add-to-cart='. $id .'" + "&quantity= " + $(this).val());
});
});
</script>
<div class="button alt redirect_to_checkout" style="cursor:pointer;"><a href="/checkout/?add-to-cart='. $id .'">Buy now</a></div>
';
}
}
add_action( 'woocommerce_after_add_to_cart_button', 'wpcoderpro_direct_checkout_button',1);
这段代码缺陷是,每次点击Buy now,会把放在购物车的所有产品都结算,并且最大问题是,结算的数量是选项数量的双倍。
持续更新中……