Я пытаюсь получить категории продуктов для позиции заказа woocommerce на хуке woocommerce_checkout_create_order_line_item.
Я могу успешно получить product_id (благодаря помощи, которую я получил здесь), но теперь, пытаясь получить категории продукта, массив возвращается пустым, пытаясь $ product-> get_categories () и, альтернативно, пытаясь wc_get_product_category_list ($ product-> get_id ().
Я не могу понять, что я делаю неправильно.
add_action('woocommerce_checkout_create_order_line_item',
'add_order_item_custom_meta', 10, 4 );
function add_order_item_custom_meta( $item, $cart_item_key, $cart_item, $order ) {
$product = $item->get_product(); // The WC_Product instance Object
$cat_names = $product->get_categories(); // one attempt
$cat_names = wc_get_product_category_list($product->get_id()); // another attempt
$arrlength = count($cat_names);
for($x = 0; $x<$arrlength; $x++) {
$cat_name = $cat_names[$x];
}
$item->update_meta_data( '_raw_product_id', $product->get_id() );
$item->update_meta_data( '_raw_product_name', $cat_name );
}
Итак, add_action и функция работают. "$ Product = ..." работает, и я могу использовать его ниже от 2-й до последней строки кода как $ product-> get_id (), и правильное значение сохраняется как метаданные по желанию.
Так что, поскольку $ product-> get_id () работает, я подумал, что логично, что $ product-> get_categories () будет работать. Но он возвращает нулевой массив.
Затем я где-то читал, что это устарело, и я должен использовать wc_get_product_category_list. Я попробовал это, и тоже не повезло.
Итак, я застрял и не могу понять, что не так с моим кодом. Спасибо за любую помощь.