Quiero hacer algo después de que WordPress envió un correo electrónico. Por ejemplo, después de enviar el correo electrónico "Restablecer contraseña" usando la wp_mail()
función.
Investigué un poco en la PHPMailer
clase y descubrí que admite una acción personalizada .
Así es como se activa la devolución de llamada con el doCallback()
método en la clase.
También hay una PHPMailer
prueba en GitHub con esta función a través de la callbackAction()
devolución de llamada.
Podemos configurarlo en WordPress con:
$phpmailer->action_function = 'wpse_mail_action';
donde wpse_mail_action()
está la devolución de llamada de acción.
Aquí hay un ejemplo de cómo podemos aplicar esto:
/**
* 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';
} );
Ahora tenemos acceso al wpse_mail_action
gancho.
Luego podríamos agregar nuestro propio registrador de correo y verificar si los correos se enviaron con éxito o no.
Aquí hay un ejemplo (no probado) de cómo podríamos hacer algo después de enviar las publicaciones de "Restablecimiento de contraseña":
/**
* 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 );
donde podríamos agregar algunas restricciones adicionales y envolvernos en otras acciones si fuera necesario, como el retrieve_password
gancho.
wp_mail()
lo tanto , nunca podría llamarse dentro de CF7. Tenga en cuenta que los complementos de terceros están fuera de tema aquí en WPSE. @AmirMousavi