如何解决从WooCommerce的订单项中获取产品类别ID
我有几个代码片段来获取产品类别,它们可以工作,但是都错过了可变产品的类别。
有人能指出我正确的方向吗?
$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() )
//...
}
只有这样,产品才会具有一个类别。
我按照某处的建议尝试了此操作,但仍然返回false?
$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() )
//...
}
这将起作用。
对于产品变体,您始终需要获取父变量产品,该产品总是使用
WC_Order_Item_Product
get_product_id()
方法获得。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。