Получить категорию продукта для каждого элемента заказа WooCommerce - PullRequest
1 голос
/ 08 апреля 2019

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

Мой код теперь имеет следующий код:

foreach ($order->get_items() as $item_key => $item_values) {

    ## Using WC_Order_Item methods ##

    // Item ID is directly accessible from the $item_key in the foreach loop or
    $item_id = $item_values->get_id();

    ## Using WC_Order_Item_Product methods ##

    $item_name = $item_values->get_name(); // Name of the product
    $item_type = $item_values->get_type(); // Type of the order item ("line_item")

    $product_id = $item_values->get_product_id(); // the Product id
    $product = $item_values->get_product(); // the WC_Product object

    ## Access Order Items data properties (in an array of values) ##
    $item_data = $item_values->get_data();

    $product_name = $item_data['name'];
    $item_totaal = $item_data['subtotal']; 

    // Get data from The WC_product object using methods (examples)
    $product_type   = $product->get_type();
    $product_price  = $product->get_price();
}

Возможно, это сработаетно это не так: $product_category = $product->get_category();

Какая строка мне нужна?

1 Ответ

0 голосов
/ 08 апреля 2019

Метод WC_Product get_category() не существует, и я помню, что вы можете иметь множество категорий продуктов для одного продукта.

Существует несколько способов получения категорий продуктов, установленных в продукте:

1) Вы можете использовать метод get_catogory_ids(), чтобы получить категории продуктовИдентификаторы (массив идентификаторов терминов) например:

foreach ($order->get_items() as $item ) {
    $product = $item->get_product(); // the WC_Product Object

    $product_category_ids  = $product->get_category_ids(); // An array of terms Ids
}

2) Или для получения названий категорий продуктов (массивимена терминов) вы можете использовать wp_get_post_terms() как:

foreach ($order->get_items() as $item ) {
    $term_names = wp_get_post_terms( $item->get_product_id(), 'product_cat', ['fields' => 'names'] );

    // Output as a coma separated string
    echo implode(', ', $term_names);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...