Dans Easy Digital Downloads 3.2.0, les actions après commande ont été introduites pour remplacer les actions après paiement dépréciées. Ce hook offre aux développeurs un moyen de traiter des actions intensives lorsqu'un paiement est complété sans affecter la vitesse et les performances de l'utilisateur final lors de l'achat. Ceci est un guide sur la façon d'ajouter une action après commande.
Introduction aux actions après commande
Si vous cherchez à effectuer des actions supplémentaires lorsqu'une commande est marquée comme « terminée », nous vous encourageons à utiliser le hook edd_after_order_actions au lieu du hook edd_complete_purchase. Quelle est la différence entre ces deux hooks ?
edd_complete_purchase– S'exécute pendant le processus d'achat après que l'utilisateur a cliqué sur le bouton « Finaliser l'achat » et avant que la page « Confirmation de l'achat » ne soit chargée. Ce hook doit être utilisé pour les tâches « critiques », car il aura un impact sur le temps perçu par l'utilisateur pour finaliser son achat. Des exemples d'utilisation de ce hook devraient être des tâches telles que la création de clés de licence, la génération d'abonnements, ou tout ce que l'utilisateur doit avoir visible sur la page de reçu.edd_after_order_actions– S'exécute environ 30 secondes après la complétion de l'achat, via le systèmeWP_Cron. Ce hook doit être utilisé pour effectuer des appels API supplémentaires, des requêtes de base de données coûteuses et des tâches qui devraient être considérées comme non critiques pour que l'utilisateur finalise son achat. De bons exemples sont l'ajout d'utilisateurs à des listes de diffusion, le calcul de statistiques pour un utilisateur, la mise à jour de caches, etc.
Quels arguments sont passés au hook ?
Le hook edd_after_order_actions envoie trois arguments :
- L'ID de la commande sous forme d'entier
- L'objet
EDD\Orders\Order - L'objet
EDD_Customer
Quels statuts de commande sont inclus dans « terminé » ?
Easy Digital Downloads utilise le statut complete pour marquer une commande comme terminée. Si vous intégrez ou utilisez l'extension Recurring Payments, le statut edd_subscription est également considéré comme une commande « terminée ». Si vous souhaitez uniquement exécuter votre action pour l'achat initial (et ignorer les renouvellements d'abonnement), vous devrez vérifier que le $order->status a la valeur complete avant de continuer avec votre intégration.
Pourquoi cela nécessite-t-il WP_Cron ?
WP_Cron est un processus d'arrière-plan que votre site WordPress utilise pour accomplir des tâches sans impacter l'expérience de l'utilisateur lors de la visualisation de votre site. Lorsque du trafic est généré sur votre site, avant que la page ne soit complètement chargée, WordPress détermine s'il y a des tâches d'arrière-plan qui doivent être effectuées. S'il y en a, il lancera un processus d'arrière-plan pour gérer ces tâches en attente.
Que se passe-t-il si mon hébergeur désactive WP_Cron ?
Bien que nous fassions de notre mieux pour détecter si WP_Cron fonctionne, il peut arriver que nous ne puissions pas le détecter correctement. Si votre hébergeur ou votre serveur a désactivé WP_Cron ou l'a modifié pour qu'il s'exécute à une fréquence prédéterminée, vous devrez peut-être désactiver cette fonctionnalité manuellement. Il existe un filtre si vous choisissez de ne pas utiliser les crochets d'action après, auquel cas EDD se rabattra et effectuera les actions au moment de la complétion, et évitera le processus retardé.
AVIS : Étant donné que ce système d'actions après la commande dépend de WP_Cron, il ne doit pas être utilisé pour des choses considérées comme « critiques ». C'est simplement un moyen de décharger les intégrations coûteuses avec les API et les grands ensembles de données qui n'affectent pas directement les données d'achat.
Points clés concernant les actions après la commande
- Déclenchement via
WP_Cron - Peut être désactivé via un filtre (
edd_use_after_payment_actions) - Par défaut, il est planifié 30 secondes après l'achat, mais cela peut être modifié via un filtre.
- La table de base de données de la commande contient une colonne pour l'heure à laquelle les actions ont été complétées.
Y a-t-il un exemple ?
Nous avons créé un « modèle » pour l'intégration avec le crochet edd_after_order_actions dans notre bibliothèque WP Code. Il peut être consulté ici :
Migration de votre code depuis edd_after_payment_actions
Si vous vous intégriez précédemment au crochet edd_after_payment_actions, la bonne nouvelle est que la migration vers ce nouveau crochet plus efficace est assez facile.
La principale différence réside dans le changement du deuxième paramètre. Au lieu d'envoyer le paiement en tant qu'objet EDD_Payment, il enverra un objet Order.
