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>';
});

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
喜欢就支持一下吧
点赞15 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

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

    暂无评论内容