1

我有几个代码片段来获取产品类别,它们正在工作,但它们都错过了可变产品的类别。

谁能指出我正确的方向?

$items = $order->get_items();
$categories = array();
foreach($items as $item) {
    $product = $item->get_product();
    $product_categories = $product->get_category_ids();
    //...
}

这个片段有同样的问题。(它使用来自发票插件的钩子,但我认为这无关紧要)

add_action( 'wpo_wcpdf_after_item_meta', 'wpo_wcpdf_show_product_categories', 10, 3 );
function wpo_wcpdf_show_product_categories ( $template_type, $item, $order ) {
    wc_get_product_category_list( $item['product']->get_id() )
    //...
}

如果这很重要,产品将永远只有一个类别。

我按照某处的建议尝试了这个,但仍然返回错误?

$the_product = wc_get_product( $item['product']->get_id() );
$variable_categories = wc_get_product_category_list( $the_product->get_id() );

干杯!

4

1 回答 1

2

要从订单项中获取产品类别 ID,请改用以下命令:

$category_ids = array();

foreach($order->get_items() as $item) {
    $product = wc_get_product( $item->get_product_id() );

    $categories = array_merge( $category_ids, $product->get_category_ids() );
    //...
}

所以在你的钩子函数中:

add_action( 'wpo_wcpdf_after_item_meta', 'wpo_wcpdf_show_product_categories', 10, 3 );
function wpo_wcpdf_show_product_categories ( $template_type, $item, $order ) {
    wc_get_product_category_list( $item->product_get_id() )
    //...
}

这将起作用。

对于产品变体,您始终需要获取父变量产品,您始终使用该WC_Order_Item_Product get_product_id()方法获取该变量。

于 2020-10-18T16:53:47.890 回答