我们有所有的虚拟和可下载产品的woocommerce网站。我们有多张与每个产品相连的票。我们做了一些研究,了解到woocommerce将购物车中的每一项都作为单独的预订。我们想对购物车中的所有物品进行单一预订。
例如,我们想在2021年05/06/21年的某一天参观一个博物馆,里面有成人、儿童和老年人门票。假设用户选择了5名成人、2名儿童和1名老年人。根据我们的研究,我们知道woocommerce将做3次预订。
我们仅为5名成人、2名儿童和1名老年人保留单人预订。
在woocommerce有办法做这样的事吗?
发布于 2021-06-02 07:54:53
可能有插件,但最简单的方法是构建自己的函数来处理这个问题。
因此,与默认的add按钮不同,您可以添加自己的按钮,或者编写一些激发AJAX请求的JavaScript。然后,该请求将以编程方式将相关项添加到购物车中。完成后,您可以带用户到购物车页面。所以像这样的东西,注意,这是一个非常粗糙的,没有经过测试的例子,有很多关于如何做这个的信息。
加到手推车上启动
addToCart: function(e) {
e.preventDefault();
var item_id = $(e.target).data('something');
$.ajax({
url: ajaxurl,
type: "POST",
data: {
'action': 'add_to_cart',
'item_id': item_id
},
success:function(data) {
// send to cart
}
});
}在您的functions.php文件中(或者更好地使用单独的函数-ajax.php文件)
<?php
function customAddToCart(){
global $woocommerce;
// you should do some checking against the values sent over along with a nonce
// then do something with the item id you sent over and add products to the cart as required, so for example:
if($_POST['item_id'] == "98765") {
$woocommerce->cart->add_to_cart(10,5); // 5 adult tickets
$woocommerce->cart->add_to_cart(4,2); // 2 child tickets
$woocommerce->cart->add_to_cart(11); // 1 senior tickets
}
// obviously needs more logic and that
echo "1";
die();
}
add_action('wp_ajax_add_to_cart', 'customAddToCart');
add_action('wp_ajax_nopriv_add_to_cart', 'customAddToCart'); 发布于 2021-06-02 17:14:45
是的,你不需要把成人、孩子和高级军官看作是个人的东西,但是你需要把它看作是一种订购的元。
假设您有一个product A,它现在是参观博物馆的,当有人进入产品页面时,应该有adults、kids和senior citizens的3个编号字段。每当一个人需要预订产品时,他/她必须确保他至少要确保这三个字段中的任何一个都至少有一个值。
这些字段将负责更新产品的价格,一旦产品被添加,成人、儿童和老年人的价值将保存在订单中。
搜索完后,我发现了这个插件- 先进产品领域。
我不认为这将节省秩序元(成人,儿童和老年人的计数)的秩序。使用此回答使用代码更新元数据。
https://stackoverflow.com/questions/67799635
复制相似问题