У меня есть собственный код на моем сайте WooCommerce, который добавляет продукт в корзину пользователей. Я уже проверил содержимое корзины, чтобы убедиться, что в корзине есть еще один продукт, но я также хочу, чтобы он проверял, что добавленный продукт находится в запасе ...WooCommerce Проверьте наличие идентификатора товара перед добавлением
Я не могу работать лучший способ сделать это. Был бы очень признателен, если вы можете, дайте мне знать, что добавить к функции, чтобы сделать его проверить запас «product_id» и если запас> 0. Вот мой код:
add_action('template_redirect', 'add_product_to_cart');
function add_product_to_cart() {
if (! is_admin()) {
$product_id = 21576;
$found = false;
global $woocommerce;
//check if product already in cart
if (sizeof(WC()->cart->get_cart()) > 0) {
foreach (WC()->cart->get_cart() as $cart_item_key => $values) {
$_product = $values['data'];
if ($_product->id == $product_id)
$found = true;
}
// if product not found, add it
if (! $found)
WC()->cart->add_to_cart($product_id);
if (sizeof(WC()->cart->get_cart()) == 1 && $found == true) {
$woocommerce->cart->empty_cart();
}
}
}
}
Это все еще вызывает ошибку ... Неустранимая ошибка: вызов функции-члена is_in_stock() на не-объекте в /nas/content/staging/tulaforlife/wp-content/plugins/tula/index.php on line 135 – user2115227
Спасибо за сохранение этого. Я заметил, что переменная неверна в WC() -> cart-> add_to_cart ($ product_id); (должно быть $ target_product_id).Если я изменил это, с вашим новым кодом, теперь он работает, однако он все равно пытается добавить продукт, даже если уровень запасов равен 0, и показывает сообщение в корзине, в котором говорится, что он не может добавить продукт, потому что его нет в наличии :( – user2115227
Спасибо :) Это все еще не работает. Он добавляет продукт, если он на складе, если его нет на складе, он все еще пытается добавить продукт, а затем показывает сообщение о том, что продукт отсутствует на складе, поэтому его нельзя добавить. Это то, чего я пытаюсь избежать - так что, если он отсутствует на складе, он просто не пытается его добавить. :/ – user2115227