也有插件,自己研究了下,几行代码搞定。
1、先在产品单页form表单里添加一个按钮,用于点击,同时按钮里添加一个产品ID的属性提交用于处理:
//添加立即购买按钮
add_action('woocommerce_after_add_to_cart_button', function (){
global $product;
echo '<button id="wa_buy_now" type="submit" name="kekc_buy_now" value="'.$product->get_ID().'" class="single_add_to_cart_button buy_now_button button alt">Buy Now</button>';
});
2、处理提交来的数据,最后要跳转到结账页面。
//点击Buy Now的处理程序
add_action('init', function(){
if (isset($_REQUEST['kekc_buy_now'])) {//点击了Buy Now
//在这里处理提交过来的数据
}
}
对于处理提交过来的数据,这里有两种方法:
方法一是可以自己处理数据,可以选择是否把以前用户购物车里的商品清空,以及在次过程中修改商品数据等,但是可能兼容性不好;方法三是使用woocommerce处理添加购物车,再跳转到结账页,兼容性好,但是在结账页会有提示加入购物车成功,也不能清空以前的购物车内容。
方法一,自己写处理程序:
//设置处理程序
add_filter("woocommerce_add_to_cart_handler",function(){return "kekcbuynow";});
//执行处理程序
add_action("woocommerce_add_to_cart_handler_kekcbuynow",function(){
WC()->cart->empty_cart();
$product_id = absint($_REQUEST['wa_buy_now']);//产品ID
$quantity = absint($_REQUEST['quantity']);//数量
if (isset($_REQUEST['variation_id'])) {//变体产品
$variation_id = absint($_REQUEST['variation_id']);
WC()->cart->add_to_cart($product_id, 1, $variation_id);
} else {//普通产品
WC()->cart->add_to_cart($product_id, $quantity);
}
wp_safe_redirect(wc_get_checkout_url());
exit;//这里记得结束程序,因为我们已经是跳转了,后续不需要处理任何事情
});
方法二,让程序自己加购物车,随后跳转到结账页:
add_filter("woocommerce_add_to_cart_redirect",function(){return wc_get_checkout_url();});//直接在添加购物车后跳转到结账页
© 版权声明
THE END
暂无评论内容