J'essaie de consigner dans la base de données le courrier électronique du reçu d'achat envoyé par le plug-in EDD. Mais je suis incapable de le faire.
Le plug-in personnalisé qui enregistre les e-mails est raccordé à l'attache wp_loaded
et filtre tous les e-mails à l'aide du filtre suivant.
add_filter( 'wp_mail', array( $this, 'log_email' ) );
Mais les e-mails de confirmation d'achat ne sont pas enregistrés.
Remarque: Le plug-in personnalisé enregistre les autres courriels envoyés. Exemple, si j'utilise le plug-in WP Mail SMTP pour envoyer un courrier électronique test, ce dernier est parfaitement connecté à la base de données.
J'ai débogué pour voir si mon hook est appelé ultérieurement, mais j'ai constaté qu'EDD envoie les e-mails d'accusé de réception via le hook init
.
J'ai ensuite débogué et constaté que mon plugin est pas accroché à la variable globale $ wp_filter.
var_dump( $wp_filter['wp_mail'] );
Référence: Séquence d'accroche de WordPress Action
Toute suggestion est grandement appréciée.
Le hook wp_loaded
est déclenché après le hook init
.
Donc, au moment où vous ajoutez votre filtre, le filtre est déjà appelé par EDD.
Vous pouvez changer votre point d'ancrage en init
et utiliser une priorité élevée ou utiliser un point d'ancrage antérieur tel que plugins_loaded
.