La documentation suivante est destinée aux développeurs. Pour suivre cette documentation, vous aurez besoin d’une compréhension avancée en développement PHP et WordPress .

Les actions de commande WooCommerce peuvent être trouvées dans l’ écran de modification de Commande de WooCommerce. Les différents plugins, ou code personnalisé, peuvent également enregistrer leurs propres actions de commande qui apparaîtront dans la boîte de sélection.

AutomateWoo inclut une action appelée Action de commande de déclenchement qui peut exécuter une action de commande à partir d’un flux de travail.

Pendant de la création d’ actions de commande personnalisées pour travailler avec AutomateWoo, il est important de charger votre code dans d’autre contexte que l’administration WordPress. En effet, les flux de travail AutomateWoo ne s’exécutent pas uniquement dans le contexte administrateur. Il existe quelques solutions disponibles pour faire fonctionner une action de commande personnalisée avec AutomateWoo.

  1. Chargez le code d’action de commande pour toutes les demandes (par exemple, supprimez toutes les conditions  is_admin()autour de votre code). Cela fonctionne mais ce n’est pas très efficace.
  2. Le code peut être optimisé en se chargeant uniquement avant l’ exécution de l’action Action de déclenchement de l’ordre (en plus du moment où vous le chargiez normalement). Veillez à ce que  toute logique ne s’exécute pas plusieurs fois car plusieurs actions et flux de travail peuvent s’exécuter dans la même demande. Voici un exemple de code.

<? php

/ **
* Assurez-vous que les actions de commande personnalisées se chargent avant que l’action AutomateWoo «Action de commande de déclenchement» ne s’exécute.
* /
add_action ( ‘automatewoo_before_action_run’ , function ( $ action ) {
/ ** @var \ AutomateWoo \ Action $action * /
if ( ‘trigger_order_action’ ! == $action -> get_name ()) {
retour ;
}

// Chargez ici les actions de commande personnalisées si elles n’ont pas déjà été chargées dans la requête actuelle
// Exemple de code ci-dessous …
if (! my_plugin_has_registered_order_actions ()) {
my_plugin_register_order_actions ();
}
});