我想將訂單專案類別保存在訂單專案元中。從這個答案https://stackoverflow.com/a/55575047/12183966中獲得了幫助,但我在 WooCommerce 結帳時收到內部服務器錯誤。
未捕獲的錯誤:在 null 上呼叫成員函式 get_items()
我無法弄清楚我在這里做錯了什么。有什么建議嗎?
這是我的代碼:
// 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 );
}
}
uj5u.com熱心網友回復:
woocommerce_add_order_item_meta自 WooCommerce 3 以來不推薦使用hook 。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 );
注意:在元鍵開頭添加下劃線(如:)_category將任何元值設定為隱藏訂單項元資料,因此它僅在管理訂單編輯頁面上可見
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/454865.html
標籤:php WordPress woocommerce 命令
