In Easy Digital Downloads 3.2.0 werden de after order actions geïntroduceerd ter vervanging van de verouderde after payment actions. Deze hook biedt ontwikkelaars een manier om intensieve acties te verwerken wanneer een betaling is voltooid, zonder de snelheid en prestaties van de eindgebruiker die de aankoop voltooit, te beïnvloeden. Dit is een handleiding voor het toevoegen van een 'after order action'.
Introductie tot After Order Actions
Als u aanvullende acties wilt uitvoeren wanneer een bestelling als 'voltooid' is gemarkeerd, wordt u aangemoedigd om de edd_after_order_actions hook te gebruiken in plaats van de edd_complete_purchase hook. Wat is het verschil tussen deze twee hooks?
edd_complete_purchase– Wordt uitgevoerd tijdens het aankoopproces nadat de gebruiker op de knop ‘Complete Purchase’ heeft geklikt en voordat de pagina ‘Purchase Confirmation’ is geladen. Deze hook moet worden gebruikt voor “missiekritieke” taken, omdat deze de waargenomen tijd die de gebruiker nodig heeft om zijn aankoop te voltooien, zal beïnvloeden. Voorbeelden van het gebruik van deze hook zijn taken zoals het maken van licentiesleutels, het genereren van abonnementen, of alles wat de gebruiker op de ontvangstpagina zichtbaar moet hebben.edd_after_order_actions– Wordt ongeveer 30 seconden na voltooiing van de aankoop uitgevoerd, via hetWP_Cronsysteem. Deze hook moet worden gebruikt voor aanvullende API-aanroepen, dure databasequery's en taken die als niet-missiekritiek worden beschouwd voor de gebruiker om zijn aankoop te voltooien. Goede voorbeelden hiervan zijn het toevoegen van gebruikers aan mailinglijsten, het berekenen van statistieken voor een gebruiker, het bijwerken van caches, enz.
Welke argumenten worden aan de hook doorgegeven?
De edd_after_order_actions hook stuurt drie argumenten:
- De order-ID als een integer
- Het
EDD\Orders\Orderobject - Het
EDD_Customerobject
Welke bestelstatussen zijn inbegrepen bij 'voltooid'?
Easy Digital Downloads gebruikt de status complete om een bestelling als voltooid te markeren. Als u de Recurring Payments-extensie integreert of gebruikt, wordt de edd_subscription-status ook beschouwd als een 'voltooide' bestelling. Als u alleen wilt dat uw actie wordt uitgevoerd voor de initiële aankoop (en abonnementverlengingen negeert), moet u de $order->status controleren op de waarde complete voordat u doorgaat met uw integratie.
Waarom is WP_Cron hiervoor nodig?
WP_Cron is een achtergrondproces dat uw WordPress-site gebruikt om taken te voltooien zonder de gebruikerservaring van uw site te beïnvloeden. Wanneer er verkeer op uw site wordt gegenereerd, bepaalt WordPress voordat de pagina volledig is geladen of er achtergrondtaken moeten worden voltooid. Zo ja, dan start het een achtergrondproces om deze openstaande taken af te handelen.
Wat als mijn host WP_Cron uitschakelt?
Hoewel we ons best doen om te detecteren of WP_Cron werkt, kan het voorkomen dat we dit niet goed kunnen detecteren. Als uw host of server WP_Cron heeft uitgeschakeld of heeft aangepast om met een vooraf bepaalde frequentie te draaien, moet u deze functie mogelijk handmatig uitschakelen. Er is een filter als u ervoor kiest om geen after action hooks te gebruiken, in welk geval EDD zal terugvallen en de acties zal uitvoeren op het moment van voltooiing, en het vertraagde proces zal vermijden.
LET OP: Omdat dit after order actions systeem afhankelijk is van WP_Cron, mag het niet worden gebruikt voor zaken die als ‘missiekritiek’ worden beschouwd. Het is simpelweg een manier om dure integraties met API's en grote datasets uit te besteden die de aankoopgegevens niet direct beïnvloeden.
Belangrijke punten over after order actions
- Triggers via
WP_Cron - Kan worden uitgeschakeld via filter (
edd_use_after_payment_actions) - Standaard wordt het 30 seconden na de aankoop gepland, maar dit kan worden gewijzigd via een filter.
- De database tabel van de bestelling bevat een kolom voor de tijd waarop de acties zijn voltooid.
Is er een voorbeeld?
We hebben een ‘sjabloon’ gemaakt voor integratie met de edd_after_order_actions hook in onze WP Code bibliotheek. Het kan hier worden bekeken:
Uw code migreren van edd_after_payment_actions
Als u eerder integreerde met de edd_after_payment_actions hook, is het goede nieuws dat migreren naar deze nieuwe, efficiëntere hook vrij eenvoudig is.
Het belangrijkste verschil is de wijziging van de tweede parameter. In plaats van de betaling als een EDD_Payment object mee te sturen, wordt een Order object meegestuurd.
