이메일을 보낸 후 무언가를하십시오


11

WordPress에서 이메일을 보낸 후 무언가를하고 싶습니다. 예를 들어, wp_mail()기능을 사용하여 "비밀번호 재설정"이메일을 보낸 후 .

답변:


14

액션 콜백과 함께 PHPMailer 클래스 사용

나는 PHPMailer수업에 파고 들었고 그것이 커스텀 액션을 지원한다는 것을 알았다 .

다음doCallback() 은 클래스 의 메소드를 사용하여 콜백을 활성화하는 방법입니다.

콜백 을 통해이 기능을 사용하는 GitHub에 대한 PHPMailer 테스트 도 있습니다 callbackAction().

WordPress에서 다음을 사용하여 설정할 수 있습니다.

$phpmailer->action_function = 'wpse_mail_action';

wpse_mail_action()액션 콜백은 어디에 있습니까 ?

다음은이를 적용하는 방법의 예입니다.

/**
 * 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';
} );

이제 우리는 wpse_mail_action갈고리에 접근 할 수 있습니다 .

그런 다음 자체 메일 로거를 추가하고 메일이 성공적으로 전송되었는지 확인할 수 있습니다.

예:

다음은 "비밀번호 재설정"게시물이 전송 된 후 수행 할 수있는 방법에 대한 예입니다.

/**
 * 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 );

필요한 경우 추가 제한을 추가하고 필요한 경우 다른 작업으로 마무리 할 수 ​​있습니다 retrieve_password.


전혀 감사합니다. 방금 플러그인을 만들었으며 wordpress 플러그인 디렉토리에서 액세스 할 수 있습니다. wordpress.org/plugins/telegram-for-wp
Ameer Mousavi

1
새 플러그인 @AmirMousavi
birgire에

Contact Form 7 플러그인과 충돌이 있습니다. 송신 결과를 수신 할 수 없습니다. Ajax 로더는 영원히 회전하고 있습니다. 이메일이 성공적으로 전송 된 경우에도 마찬가지입니다.
Ameer Mousavi

2
CF7 로이 방법을 테스트했으며 예상대로 작동했습니다. ajaxloader가 계속 회전하면 관련없는 javascript / PHP / Server 오류를 나타낼 수 있으므로 wp_mail()CF7 내에서 호출되지 않을 수 있습니다. 타사 플러그인은 WPSE에서 다루지 않습니다. @AmirMousavi
처녀 자리
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.