回答:
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
フックなどの他のアクションにラップできます。
wp_mail()
可能性があるため、CF7内で呼び出されることはありません。サードパーティのプラグインは、WPSEのトピックから外れていることに注意してください。@AmirMousavi