Как проверить в какой категории находится товар на странице checkout?

Есть 2 категории товаров. Для каждой категории отдельные шаблоны страницы товаров, и разные поля для оформления заказа. Дополнительные поля я добавил с помощью кода. Все работает. Только нужно добавить проверку.

Если в заказе есть товар который находится в категории майстеркласы id 31 - выводим все дополнительные поля. Если в заказе только билет на концерт id категории 30, выводим стандартные поля.

Пробовал WC()->cart->get_cart() это работает когда вставить в файл шаблона страницы чекаут, но выдало ошибку в файле функций.

До какого массива подключится? И как сделать проверку?
  • Вопрос задан
  • 114 просмотров
Решения вопроса 1
wfantastic
@wfantastic
увлечен wordpress
Для проверки категории товара в корзине, можно использовать метод 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 и отображаем соответствующие поля на странице оформления заказа. Вместо комментариев // ... вы должны указать соответствующий код для отображения полей.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы