Привет всем.
По дефолту если стелать вариативный товар (к примеру с размерами обуви), то соответственно на странице товара мы получим размеры, все по классике. Но была задача сделать следующим образом:
Low in Stock (Если в наличии только 2 товара)
In stock (Если в наличии больше 2 товаров)
Only 1 left (Если одна пара в наличии)
Pre-order now (Если нет в наличии, то предоставить возможность предзаказа)
Sold Out (Товар закончился и он не может быть предзаказан потому что на фабрике нет материалов.)
Для этого я попросил ChatGPT написать мне код:
add_filter('woocommerce_variation_option_name', 'display_price_in_variation_option_name');
function display_price_in_variation_option_name($term)
{
global $product;
if (empty($term)) {
return $term;
}
if (empty($product->id)) {
return $term;
}
$variation_id = $product->get_children();
foreach ($variation_id as $id) {
$_product = new WC_Product_Variation($id);
$variation_data = $_product->get_variation_attributes();
$stock_status = $_product->get_stock_status();
$stock_status = str_replace(array('instock', 'outofstock', 'onbackorder'), array('In Stock', 'Out of Stock', 'Pre-order'), $stock_status);
foreach ($variation_data as $key => $data) {
if ($data == $term) {
$remaining_stock = $_product->get_stock_quantity();
if ($remaining_stock > 2) {
$html = 'In stock';
} elseif ($remaining_stock == 2) {
$html = 'Low in Stock';
} elseif ($remaining_stock == 1) {
$html = 'Only 1 left';
} elseif ($remaining_stock == 0 && $_product->is_on_backorder()) {
$html = 'Pre-order now';
} else {
$html = 'Sold Out';
}
return $html;
}
}
}
return $term;
}
Все работает как часы. см. изображение
Теперь как говорится встал вопрос. После этого кода, слева от текста не выскакивают размеры обуви. ChatGPT отказывается помогать. Не умеет или ломает все.
Как сделать так чтобы вывести размеры обуви перед Low in stock, In stock...
P.S. Заметил что если вставить
$html .= ' - ' . $term;
где-то вот тут
} elseif ($remaining_stock == 2) {
$html = 'Low in Stock';
} elseif ($remaining_stock == 1) {
$html = 'Only 1 left';
то размер выскакивает, но после текста.
Как сделать красиво?
Не программист!
Спасибо и хорошего дня