从 WooCommerce 中的订单项目中获取产品类别 ID
Get product categories ids from order items in WooCommerce
我有几个代码片段来获取产品类别,它们可以正常工作,但都遗漏了可变产品的类别。
谁能指出我正确的方向?
$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() )
//...
}
如果重要的话,产品只会有一个类别。
我按照某处的建议进行了尝试,但仍然 returns 错误?
$the_product = wc_get_product( $item['product']->get_id() );
$variable_categories = wc_get_product_category_list( $the_product->get_id() );
干杯!
要从订单商品中获取产品类别 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() )
//...
}
这会起作用。
For product variations, you always need to get the parent variable product, which you always get using the WC_Order_Item_Product
get_product_id()
method.
我有几个代码片段来获取产品类别,它们可以正常工作,但都遗漏了可变产品的类别。
谁能指出我正确的方向?
$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() )
//...
}
如果重要的话,产品只会有一个类别。
我按照某处的建议进行了尝试,但仍然 returns 错误?
$the_product = wc_get_product( $item['product']->get_id() );
$variable_categories = wc_get_product_category_list( $the_product->get_id() );
干杯!
要从订单商品中获取产品类别 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() )
//...
}
这会起作用。
For product variations, you always need to get the parent variable product, which you always get using the
WC_Order_Item_Product
get_product_id()
method.