私は、毎週のようなカレンダーから特定の日付の食品を注文するためのWooCommerceプラグインを開発しています。特定のカートアイテムを条件付きで削除する
ご注文の期限がありますが、明日は14:00まで毎日ご注文いただけます。それはあなたが項目を注文することができるページで動作します(制限に達するとカートに追加ボタンは表示されません)。しかし、カートにはすでに商品があり、利用不可能な場合は14:00以降に注文できます。
私はそのようなアクションのためのアクションフックがあると読んでいるので、私はそれを理解しようとしましたが、固まってしまいました。
どのように動作するかについて少し紹介します。カートに追加ボタンをクリックすると、カスタムメタタグ付きカートにアイテムが作成されます。メニューには、MenuCode-Year-WeekOfYear-DayOfWeekの形式で必要な情報が含まれています。
注文金額が指定された金額未満の場合、wc_noticeを表示するコードも含まれているため、機能名はwc_minimum_order_amount
です。この部分は以下のコードから削除されました。なぜなら、それはその質問とは無関係であり、動作するからです。ここ
とは、フックと私が使用するコードです:
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);
}
}
}
しかし、私は期待していたとして、それは、カートからアイテムを削除しないでください。
どうすればいいですか?
おかげ