WooCommerce aggancia per la creazione di ordini da admin

Nel mio plug-in personalizzato (che funziona in WooCommerce 2.6.xe 3.x), ho bisogno di get l'ID ordine quando viene creato un nuovo ordine. Ho provato diversi hook ma funzionano solo quando il cliente crea un ordine e non quando un ordine viene creato da admin.

Provai:

  • woocommerce_new_order
  • woocommerce_thankyou
  • woocommerce_checkout_order_processed
  • woocommerce_checkout_update_order_meta

Aggiornare

Finalmente ho usato questo:

add_action('wp_insert_post', function($order_id) { if(!did_action('woocommerce_checkout_order_processed') && get_post_type($order_id) == 'shop_order' && validate_order($order_id)) { order_action($order_id); } }); 

where validate_order è:

 function validate_order($order_id) { $order = new \WC_Order($order_id); $user_meta = get_user_meta($order->get_user_id()); if($user_meta) return true; return false; } 

Grazie a validate_order l'azione non viene eseguita quando si inizia a creare l'ordine. Io uso !did_action('woocommerce_checkout_order_processed') perché non voglio che l'azione venga eseguita se l'ordine è creato da un cliente (ho un'azione specifica per questo, usando woocommerce_checkout_order_processed ).

Se stai usando la pagina di amministrazione .../wp-admin/post-new.php?post_type=shop_order per creare il nuovo ordine, potrebbe non esserci un hook WooCommerce per fare ciò poiché questo ordine è creato dal core di WordPress.

Tuttavia, l'azione WordPress 'save_post_shop_order' verrà chiamata con $post_ID che è l'ID ordine.

Vedi la function wp_insert_post() in ...\wp-includes\post.php .

È ansible utilizzare questo hook woocommerce_process_shop_order_meta viene triggersto quando un ordine viene creato manualmente woocommerce_process_shop_order_meta WordPress.