Я пытаюсь прикрепить к кассе woocommerce для каждого элемента дополнительные метаданные. Каждый купленный товар должен получать метаданные с категорией товара.
Я нашел отличный способ сделать это здесь , но проблема в том, что он только работает для продуктов первого уровня. Как только у меня появляется вариант продукта, я не получаю названия категории, только идентификатор продукта.
Я ищу способ получить категорию для обычного продукта или, если существует вариация либо родительского продукта, либо самого варианта - я предпочитаю варианты основной категории продукта.
Это то, что у меня есть (скопировано из приведенной выше ссылки):
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_ids = $product->get_category_ids(); // returns an array of cat IDs
$cat_names = [];
foreach ( (array) $cat_ids as $cat_id) {
$cat_term = get_term_by('id', (int)$cat_id, 'product_cat');
if($cat_term){
$cat_names[] = $cat_term->name; // You may want to get slugs by $cat_term->slug
}
}
$item->update_meta_data( '_raw_product_id', $product->get_id() );
$item->update_meta_data( '_raw_product_name', $cat_names );
}
Любая помощь приветствуется - я новичок в WooCommerce.