Я хочу позволить клиентам добавлять товары в свою корзину Woocommerce и оставлять их там так долго, как они хотят, чтобы они могли добавлять их в свою досуг. Любые строки, которых нет в наличии, должны быть автоматически удалены из корзины и появилось сообщение о том, что это произошло. Что-то вроде «Все отсутствующие товары были удалены из учетной записи, поскольку они больше не доступны».
Пока я пробовал это
public function is_in_stock() {
return apply_filters( 'woocommerce_product_is_in_stock', 'instock' === $this->get_stock_status(), $this );
}
function notes_in_cart() {
global $woocommerce;
if ( ! $_POST || ( is_admin() && ! is_ajax() ) ) {
return;
}
if ( isset( $_POST['post_data'] ) ) {
parse_str( $_POST['post_data'], $post_data );
} else {
$post_data = $_POST; // fallback for final checkout (non-ajax)
}
if ( WC()->cart->needs_shipping() ){
// set $out_of_stock_exists to false by default
$out_of_stock_exists = false;
foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) {
if($values['data']->backorders_allowed()){ //check if backorders are allowed on this product
// get the stock quantity - returns the available amount number
$stock_info = $values['data']->get_stock_quantity();
if($stock_info < $values['quantity']){
set $out_of_stock_exists to true and stop foreach execution
$out_of_stock_exists = true;
break;
}
}
}
//if cart has items out of stock
if ($out_of_stock_exists) {
?>
<tr class="ceckoutStockMeta">
<th>Item Shipments</th>
<td>
<p style="color: red;">*All out of stock items have been removed from your cart as they are no longer available.</p><br>
<form>
<input type="radio" name="stockOp" id="stockOption1" value="ship" />
<label for="stockOption1">Ship what is available now</label><br>
<input type="radio" name="stockOp" id="stockOption2" value="hold" />
<label for="stockOption2">Wait and ship together</label>
</form>
</td>
</tr>
<?php
}
}
add_action( 'woocommerce_cart_totals_after_order_total', 'notes_in_cart' );
add_action( 'woocommerce_review_order_after_order_total', 'notes_in_cart' );
Я не уверен, нужно ли все это, учитывая, что в любом случае необходимо задерживать заказы.
Может кто-нибудь сказать мне, если это правильно?
Что касается автоматического удаления нетканых строк из корзины аккаунта, я предполагаю, что это произойдет «из коробки» с Woocommerce. Может кто-нибудь подтвердить это или предоставить способ сделать это?
Спасибо,
Bryan