Для проверки категории товара в корзине, можно использовать метод get_cart() класса WC_Cart, который вернет массив всех товаров в корзине.
Чтобы получить идентификаторы категорий для каждого товара в корзине, можно использовать метод get_category_ids() объекта WC_Product для каждого товара в корзине. Этот метод вернет массив идентификаторов всех категорий, к которым относится товар.
Пример кода для проверки наличия товара в категории "Мастерклаcсы" (id=31) и отображения соответствующих полей на странице оформления заказа:
<?php
// Получаем содержимое корзины
$cart_items = WC()->cart->get_cart();
// Флаг, показывающий наличие товара в категории "Мастерклаcсы"
$has_workshop_product = false;
// Перебираем все товары в корзине
foreach ( $cart_items as $cart_item ) {
// Получаем объект товара
$product = $cart_item['data'];
// Получаем идентификаторы категорий товара
$category_ids = $product->get_category_ids();
// Проверяем наличие товара в категории "Мастерклаcсы"
if ( in_array( 31, $category_ids ) ) {
$has_workshop_product = true;
break;
}
}
// Отображаем соответствующие поля на странице оформления заказа
if ( $has_workshop_product ) {
// Поля для товаров в категории "Мастерклаcсы"
// ...
} else {
// Стандартные поля для других товаров
// ...
}
?>
В этом примере мы получаем содержимое корзины с помощью метода get_cart(), а затем перебираем все товары в корзине. Для каждого товара мы получаем идентификаторы его категорий с помощью метода get_category_ids() и проверяем, содержится ли идентификатор категории "Майстеркласы" в этом списке. Если такой товар найден, мы устанавливаем флаг $has_workshop_product в true.
Затем мы проверяем значение флага $has_workshop_product и отображаем соответствующие поля на странице оформления заказа. Вместо комментариев // ... вы должны указать соответствующий код для отображения полей.