Как получить категории из заказа при оформлении заказа в WooCommerce?

Я хочу получить категорию товаров в корзине на кассе в WooCommerce. Я хочу извлечь его, а затем поместить в поле в моей пользовательской кассе.

я использую WooCommerce MultiStep Checkout Wizard Премиум плагин и конкретный крюк:

add_action('woocommerce_multistep_checkout_before_order_info', 'destinationStep');

Я немного потерян и не могу найти много документация за то, что мне нужно использовать, чтобы получить это.

Я пытаюсь заставить элементы появляться, но я получаю пустой массив.

$order = new WC_Order( $order_id );
$items = $order->get_items();
var_dump($items);

1

Решение

Вы можете попробовать сначала с вашим подходом «new WC_Order( $order_id );«, сюда:

function destinationStep( $order_id )

global $woocommerce;

$order = new WC_Order( $order_id );
$items = $order->get_items();
// echo var_dump($items);

//----
foreach ($items as $key => $item) {
$product_name = $item['name'];
$product_id = $item['product_id'];
$terms = get_the_terms( $product_id, 'product_cat' );
// echo var_dump($terms);

foreach ( $terms as $term ) {
// Categories by slug
$product_cat_slug= $term->slug;
}
}

add_action('woocommerce_multistep_checkout_before_order_info', 'destinationStep', 10, 1);

Если это все еще не работает, попробуйте с «new WC_Order($post->ID)« подход:

function destinationStep()

global $woocommerce, $post;

$order = new WC_Order($post->ID);
$items = $order->get_items();
// echo var_dump($items);

//----
foreach ($items as $key => $item) {
$product_name = $item['name'];
$product_id = $item['product_id'];
$terms = get_the_terms( $product_id, 'product_cat' );
// echo var_dump($terms);

foreach ( $terms as $term ) {
// Categories by slug
$product_cat_slug= $term->slug;
}
}

add_action('woocommerce_multistep_checkout_before_order_info', 'destinationStep');

Обновить — После некоторой мысли:

Вы не могу получить идентификатор заказа для `’post_type’ => ‘shop_order’, потому что он еще не существует. Этот идентификатор заказа генерируется, когда клиент отправляет заказ, но не раньше на странице оформления заказа.
Так что в этом случае нормально получить пустой массив.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]