也有插件,自己研究了下,几行代码搞定。
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>';});//添加立即购买按钮 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>'; });//添加立即购买按钮 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//在这里处理提交过来的数据}}//点击Buy Now的处理程序 add_action('init', function(){ if (isset($_REQUEST['kekc_buy_now'])) {//点击了Buy Now //在这里处理提交过来的数据 } }//点击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_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_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();});//直接在添加购物车后跳转到结账页add_filter("woocommerce_add_to_cart_redirect",function(){return wc_get_checkout_url();});//直接在添加购物车后跳转到结账页add_filter("woocommerce_add_to_cart_redirect",function(){return wc_get_checkout_url();});//直接在添加购物车后跳转到结账页
© 版权声明
THE END
暂无评论内容