WordPressがメールを送った後に何かしたいのですが。たとえば、wp_mail()
関数を使用して「パスワードのリセット」Eメールを送信した後などです。
PHPMailer
クラスを詳しく調べたところ、 カスタムアクションがサポートされていることがわかりました .
以下は、 クラスの doCallback()
メソッドを使用してコールバックをアクティブにする方法です。
callbackAction()
コールバックを通してこの機能を使用するGitHub上のPHPMailer
テスト もあります。
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
フックのように、必要に応じてさらに制限を追加し、他のアクションにラップすることができます。