【发布时间】:2017-08-29 07:40:00
【问题描述】:
我正在开发一个 WooCommerce 插件,用于从日历(如每周列表)中订购特定日期的食物。
下单有时间限制,您可以在每天的明天14:00之前下单。它适用于您可以订购商品的页面(如果达到限制,添加到购物车按钮将不会显示),但如果您的购物车中已有商品不可用,您可以在 14:00 之后订购.
我在某处读到此类动作有一个动作挂钩,所以我试图自己弄清楚但卡住了。
简单介绍一下它的工作原理。当您单击添加到购物车按钮时,将在购物车中创建带有自定义元标记的商品,其中包含我需要的以下格式的信息:MenuCode-Year-WeekOfYear-DayOfWeek。
函数的名称是wc_minimum_order_amount,因为它还包含一段代码,用于在订单金额小于指定金额时显示 wc_notice。这部分已从以下代码中删除,因为它与问题无关,并且有效。
这是我使用的钩子和代码:
add_action('woocommerce_checkout_process', 'wc_minimum_order_amount' );
add_action('woocommerce_before_cart' , 'wc_minimum_order_amount' );
function wc_minimum_order_amount() {
$cart = WC()->cart->get_cart();
foreach($cart as $item => $values) {
$co = explode('-', $values['_custom_options']);
$year = $co[1];
$week = $co[2];
$day = $co[3];
$hour = date('H');
if($year < date('Y')) {
WC()->cart->remove_cart_item($item);
}
else if($year == date('Y') && $week < date('W')) {
WC()->cart->remove_cart_item($item);
}
else if($year == date('Y') && $week == date('W') && $day < date('w')) {
WC()->cart->remove_cart_item($item);
}
else if($year == date('Y') && $week == date('W') && $day == date('w') && $hour >= 14) {
WC()->cart->remove_cart_item($item);
}
}
}
但它并没有像我预期的那样从购物车中删除商品。
我怎样才能让它工作?
谢谢
【问题讨论】:
标签: php wordpress woocommerce cart custom-fields