добавить дополнительную мета для заказов в woocommerce

Я создаю пользовательский плагин для своего сайта.

В какой-то части этого плагина мне нужно хранить дополнительную мета в wp_postmeta для каждого заказа.

Я добавил это в мой класс плагина:

`add_action ('woocommerce_before_checkout_process', array( &$this, 'add_item_meta', 10, 2) );` 

И это add_item_meta() :

  function add_item_meta( $item_id, $values ) { wc_add_order_item_meta($item_id, '_has_event', 'yes' ); } 

Эта функция не является полной, но с этими кодами ничего не происходит; Я думаю, мне нужно использовать другой крючок, но я не могу найти подходящего.

Кто-нибудь знает что-нибудь об этом?

У меня также есть другая проблема с $item_id : это глобальная переменная woocommerce, но я не вижу ее в своем плагине!

Я имею в виду, что у меня нет доступа к этой переменной из моего плагина или что-то вроде этого!

Путь 2017 года

Основываясь на ответе Мо Саиди, я считаю, что этот фрагмент больше соответствует новому подходу CRUD, введенному WooCommerce 3.0:

 add_action('woocommerce_checkout_update_order_meta',function( $order_id, $posted ) { $order = wc_get_order( $order_id ); $order->update_meta_data( 'my_custom_meta_key', 'my data' ); $order->save(); } , 10, 2); 

Смотрите также эту тему на форумах WordPress:

  • О, КРЫШ! Custom Meta для заказа из корзины
  • Каков правильный способ обновления мета-полей в Woocommerce?

Ответ: Я должен использовать woocommerce_checkout_update_order_meta для add_action, а также просто должен использовать update_post_meta() чтобы добавить дополнительную мета в мой заказ

  function add_item_meta( $order_id ) { //global $woocommerce; update_post_meta( $order_id, '_has_event', 'yes' ); } 

Путь 2016:

 add_action('woocommerce_checkout_update_order_meta',function( $order_id, $posted ) { update_post_meta( $order_id, 'my_custom_meta_key', 'my data' ); } , 10, 2); 
  • $order_id – это идентификатор порядка, который сохраняется как пользовательский тип сообщения
  • $posted все данные из $_POST