如何在订单项元中保存订单项产品类别?
How to save order item product category in order item meta?
我想在订单项元中保存订单项类别。从这个答案中得到帮助 但我在 WooCommerce 结帐时遇到内部服务器错误。
Uncaught Error: Call to a member function get_items() on null
我不知道我做错了什么。有什么建议吗?
这是我的代码:
// Save item custom fields label and value as order item meta data
add_action('woocommerce_add_order_item_meta','save_in_order_item_meta', 10, 3 );
function save_in_order_item_meta( $item_id, $values, $cart_item_key ) {
foreach ($order->get_items() as $item ) {
$term_names = wp_get_post_terms( $item->get_product_id(), 'product_cat', ['fields' => 'names'] );
// Output as a coma separated string
$cat = implode(', ', $term_names);
wc_add_order_item_meta( $item_id, 'category', $cat );
}
}
woocommerce_add_order_item_meta
挂钩自 WooCommerce 3 起为 deprecated。请改用 woocommerce_checkout_create_order_line_item
$order
在您的代码尝试中未定义
所以你得到:
function action_woocommerce_checkout_create_order_line_item( $item, $cart_item_key, $values, $order ) {
// Get the product categories for this item
$term_names = wp_get_post_terms( $item->get_product_id(), 'product_cat', array( 'fields' => 'names' ) );
// Output as a coma separated string
$item->update_meta_data( 'category', implode( ', ', $term_names ) );
}
add_action( 'woocommerce_checkout_create_order_line_item', 'action_woocommerce_checkout_create_order_line_item', 10, 4 );
注意:在meta key开头加下划线(如:_category
)可以将任何meta值设置为隐藏的订单项meta数据,所以它是仅在管理员订单编辑页面可见
我想在订单项元中保存订单项类别。从这个答案中得到帮助 但我在 WooCommerce 结帐时遇到内部服务器错误。
Uncaught Error: Call to a member function get_items() on null
我不知道我做错了什么。有什么建议吗?
这是我的代码:
// Save item custom fields label and value as order item meta data
add_action('woocommerce_add_order_item_meta','save_in_order_item_meta', 10, 3 );
function save_in_order_item_meta( $item_id, $values, $cart_item_key ) {
foreach ($order->get_items() as $item ) {
$term_names = wp_get_post_terms( $item->get_product_id(), 'product_cat', ['fields' => 'names'] );
// Output as a coma separated string
$cat = implode(', ', $term_names);
wc_add_order_item_meta( $item_id, 'category', $cat );
}
}
woocommerce_add_order_item_meta
挂钩自 WooCommerce 3 起为 deprecated。请改用woocommerce_checkout_create_order_line_item
$order
在您的代码尝试中未定义
所以你得到:
function action_woocommerce_checkout_create_order_line_item( $item, $cart_item_key, $values, $order ) {
// Get the product categories for this item
$term_names = wp_get_post_terms( $item->get_product_id(), 'product_cat', array( 'fields' => 'names' ) );
// Output as a coma separated string
$item->update_meta_data( 'category', implode( ', ', $term_names ) );
}
add_action( 'woocommerce_checkout_create_order_line_item', 'action_woocommerce_checkout_create_order_line_item', 10, 4 );
注意:在meta key开头加下划线(如:_category
)可以将任何meta值设置为隐藏的订单项meta数据,所以它是仅在管理员订单编辑页面可见