woocommerce添加buy now按钮

也有插件,自己研究了下,几行代码搞定。

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
喜欢就支持一下吧
点赞15 分享
So what if we fall down? At least we are still young.
摔倒了又怎样,至少我们还年轻
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称常用语 夸夸
夸夸
还有吗!没看够!
表情代码图片

    暂无评论内容