it-swarm.com.de

Wie verwende ich die SMTP-Einstellungen von 'phpmailer_init' nur für bestimmte 'wp_mail'-Aktionen?

Gibt es eine bedingte Prüfung, die ich für phpmailer_init oder einen wp_mail-Parameter ausführen kann, mit der ich meine benutzerdefinierten phpmailer_init-SMTP-Einstellungen nur auf bestimmte wp_mail-Aktionen anwenden kann, oder wird phpmailer_init immer in der gesamten Site ausgeführt?

1
tomyam

phpmailer_init wird immer für jeden wp_mail()-Aufruf ausgelöst - Sie können ihn jedoch wie folgt einhängen/aushängen:

function wpse_224496_phpmailer_init( $phpmailer ) {
    // SMTP setup

    // Always remove self at the end
    remove_action( 'phpmailer_init', __function__ );
}

function wpse_224496_wp_mail( $mail ) {
    // Example: only SMTP for emails addressed to [email protected]
    if ( $mail['to'] === '[email protected]' )
        add_action( 'phpmailer_init', 'wpse_224496_phpmailer_init' );

    // Example: only SMTP for subject "Foo"
    if ( $mail['subject'] === 'Foo' )
        add_action( 'phpmailer_init', 'wpse_224496_phpmailer_init' );

    // Other properties
    $mail['message'];
    $mail['headers']; // Could be string or array
    $mail['attachments']; // Could be string or array

    return $mail;
}

add_filter( 'wp_mail', 'wpse_224496_wp_mail' );
3
TheDeadMedic