In Easy Digital Downloads 3.2.0 le after order actions sono state introdotte per sostituire le after payment actions deprecate. Questo hook fornisce agli sviluppatori un modo per elaborare azioni intensive quando un pagamento viene completato senza influire sulla velocità e sulle prestazioni dell'utente finale che completa l'acquisto. Questa è una guida su come aggiungere un'azione post-ordine.
Introduzione alle Azioni Post-Ordine
Se stai cercando di eseguire azioni aggiuntive quando un ordine viene contrassegnato come 'completato', ti incoraggiamo a utilizzare l'hook edd_after_order_actions invece dell'hook edd_complete_purchase. Qual è la differenza tra questi due hook?
edd_complete_purchase– Eseguito durante il processo di acquisto dopo che l'utente ha fatto clic sul pulsante 'Completa Acquisto' e prima che la pagina 'Conferma Acquisto' venga caricata. Questo hook dovrebbe essere utilizzato per attività "mission critical", poiché influenzerà il tempo percepito dall'utente per completare il proprio acquisto. Esempi di utilizzo di questo hook dovrebbero essere attività come la creazione di chiavi di licenza, la generazione di abbonamenti o qualsiasi cosa che l'utente debba avere visibile sulla pagina della ricevuta.edd_after_order_actions– Eseguito circa 30 secondi dopo il completamento dell'acquisto, tramite il sistemaWP_Cron. Questo hook dovrebbe essere utilizzato per eseguire chiamate API aggiuntive, query di database costose e attività che dovrebbero essere considerate non mission critical per il completamento dell'acquisto da parte dell'utente. Ottimi esempi sono l'aggiunta di utenti alle mailing list, il calcolo delle statistiche per un utente, l'aggiornamento delle cache, ecc.
Quali argomenti vengono passati all'hook?
L'hook edd_after_order_actions invia tre argomenti:
- L'ID dell'ordine come intero
- L'oggetto
EDD\Orders\Order - L'oggetto
EDD_Customer
Quali stati dell'ordine sono inclusi in 'completato'?
Easy Digital Downloads utilizza lo stato complete per contrassegnare un ordine come completato. Se stai integrando o utilizzando l'estensione Recurring Payments, anche lo stato edd_subscription è considerato un ordine 'completato'. Se desideri eseguire la tua azione solo per l'acquisto iniziale (e ignorare i rinnovi degli abbonamenti) dovrai controllare lo $order->status per un valore di complete prima di continuare con la tua integrazione.
Perché questo richiede WP_Cron?
WP_Cron è un processo in background che il tuo sito WordPress utilizza per completare le attività senza influire sull'esperienza dell'utente che visualizza il tuo sito. Quando viene generato traffico sul tuo sito, prima che la pagina finisca di caricarsi, WordPress determina se ci sono attività in background che devono essere completate. In caso affermativo, avvierà un processo in background per gestire queste attività in sospeso.
Cosa succede se il mio host disabilita WP_Cron?
Sebbene facciamo del nostro meglio per rilevare se WP_Cron sta funzionando, potrebbe esserci un caso in cui non siamo in grado di rilevarlo correttamente. Se il tuo host o server ha WP_Cron disabilitato o modificato per essere eseguito a una frequenza predeterminata, potresti dover disabilitare questa funzionalità manualmente. Esiste un filtro se scegli di non utilizzare gli hook di azione post-pagamento, nel qual caso, EDD tornerà indietro ed eseguirà le azioni al momento del completamento, evitando il processo ritardato.
ATTENZIONE: Poiché questo sistema di azioni post-pagamento dipende da WP_Cron, non dovrebbe essere utilizzato per cose considerate 'mission critical'. È semplicemente un modo per scaricare integrazioni costose con API e grandi set di dati che non influiscono direttamente sui dati di acquisto.
Punti chiave sulle azioni post-pagamento
- Attivazione tramite
WP_Cron - Disattivabile tramite filtro (
edd_use_after_payment_actions) - Per impostazione predefinita, è programmato per 30 secondi dopo l'acquisto, ma può essere modificato tramite un filtro.
- La tabella del database dell'ordine contiene una colonna per il momento in cui le azioni sono state completate.
C'è un esempio?
Abbiamo creato un 'template' per l'integrazione con l'hook edd_after_order_actions nella nostra libreria WP Code. Può essere visualizzato qui:
Migrazione del codice da edd_after_payment_actions
Se in precedenza ti sei integrato con l'hook edd_after_payment_actions, la buona notizia è che la migrazione a questo nuovo e più efficiente hook è piuttosto semplice.
La differenza principale è il cambiamento del secondo parametro. Invece di inviare il pagamento come oggetto EDD_Payment, invierà un oggetto Order.
