Voglio fare qualcosa dopo che WordPress ha inviato un'email. Ad esempio, dopo aver inviato l'e-mail "Reimposta password" utilizzando la wp_mail()funzione.
Voglio fare qualcosa dopo che WordPress ha inviato un'email. Ad esempio, dopo aver inviato l'e-mail "Reimposta password" utilizzando la wp_mail()funzione.
Risposte:
Ho scavato nella PHPMailerclasse e ho scoperto che supporta un'azione personalizzata .
Ecco come viene attivato il callback con il doCallback()metodo nella classe.
C'è anche un PHPMailer test su GitHub che utilizza questa funzione tramite il callbackAction()callback.
Possiamo configurarlo in WordPress con:
$phpmailer->action_function = 'wpse_mail_action';
dov'è wpse_mail_action()il callback dell'azione.
Ecco un esempio di come possiamo applicare questo:
/**
* Custom PHPMailer action callback
*/
function wpse_mail_action( $is_sent, $to, $cc, $bcc, $subject, $body, $from )
{
do_action( 'wpse_mail_action', $is_sent, $to, $cc, $bcc, $subject, $body, $from );
return $is_sent; // don't actually need this return!
}
/**
* Setup a custom PHPMailer action callback
*/
add_action( 'phpmailer_init', function( $phpmailer )
{
$phpmailer->action_function = 'wpse_mail_action';
} );
Ora abbiamo accesso al wpse_mail_actiongancio.
Potremmo quindi aggiungere il nostro registratore di posta e verificare se le e-mail sono state inviate correttamente o meno.
Ecco un esempio (non testato) di come potremmo fare qualcosa dopo l'invio dei post "Reimpostazione password":
/**
* Do something after the "Password Reset" post has been successfully sent:
*/
add_action( 'wpse_mail_action', function( $is_sent, $to, $cc, $bcc, $subject, $body, $from )
{
if( $is_sent && false !== stripos( $subject, 'Password Reset' ) )
// do stuff
}, 10, 7 );
dove potremmo aggiungere ulteriori restrizioni e concludere altre azioni se necessario, come il retrieve_passwordgancio.
wp_mail()potrebbe non essere mai chiamato in CF7. Si noti che i plug-in di terze parti sono fuori tema qui su WPSE. @AmirMousavi