Woocommerce показывает пользовательское сообщение об отложенном заказе при обновлении корзиныPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Woocommerce показывает пользовательское сообщение об отложенном заказе при обновлении корзины

Сообщение Anonymous »


У меня есть специальный код, который показывает разные сообщения об отложенном заказе для продуктов в зависимости от их тегов. Он отлично работает на странице продукта и в корзине, но мне нужно, чтобы он отображал персонализированные сообщения в корзине, когда количество>на складе.

Я пробовал экспериментировать с крючками (cart_update, qty_update) и переписывать код для проверки количества товара, но безуспешно. Вот что у меня есть:

function get_custom_availability_message($product, $quantity_required) { $stock_quantity = $product->get_stock_quantity(); $tags = wp_get_post_terms($product->get_id(), 'product_tag', array('fields' => 'slugs')); если ($quantity_required > $stock_quantity) { if (array_intersect(['eco', 'промённики', 'star-trading'], $tags)) { return 'Czas wysyłki: 3-7 dni roboczych'; } elseif (array_intersect(['g12', '5mm', 'm5'], $tags)) { return 'Czas wysyłki: 3-5 dni roboczych'; } // Możesz dodać więcej warunków dla innych tagów } вернуть ноль; } функция custom_availability_logic($availability, $product) { $stock_status = $product->get_stock_status(); $custom_message = get_custom_availability_message($product, 1); если ($ custom_message) { вернуть $custom_message; } if ($stock_status == 'в наличии') { return 'На месте: wysyłka w ciągu 48h'; } elseif ($stock_status == 'onbackorder') { return 'Czas wysyłki: 3-10 dni roboczych'; } вернуть $доступность; } функция custom_cart_availability($availability, $product_data, $cart_item) { $product = $cart_item['данные']; $quantity_in_cart = $cart_item['количество']; // Выбор логики $custom_message = get_custom_availability_message($product, $quantity_in_cart); если ($ custom_message) { верните '' . $ custom_message . '
'; } // Generalne ustawienia (jeśli nie znaleziono niestandardowego komunikatu) $stock_status = $product->get_stock_status(); $stock_quantity = $product->get_stock_quantity(); if ($stock_status == 'в наличии') { return 'На месте: wysyłka w ciągu 48h'; } elseif ($stock_status == 'onbackorder') { возврат ($stock_quantity > 0)? 'На месте: высылка в течение 48 часов': '
Часа высылки: 3-10 дней работы
'; } вернуть $доступность; } add_filter('woocommerce_cart_item_availability', 'custom_cart_availability', 10, 3); function custom_backorder_notification($message, $product_id = 0, $quantity = 0, $order_id = 0) { если ($product_id === 0) { вернуть $сообщение; } еще { $product = wc_get_product($product_id); $custom_message = get_custom_availability_message($product, $quantity); если ($ custom_message) { верните '
' . $ custom_message . '
'; } } вернуть $сообщение; } add_filter('woocommerce_get_availability_text', 'custom_availability_logic', 10, 2); add_filter('woocommerce_cart_item_availability', 'custom_cart_availability', 10, 3); add_filter('woocommerce_cart_item_backorder_notification', 'custom_backorder_notification', 10, 4);
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»