メール送信後に何かする


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、2015

2
私はこの方法をCF7でテストしましたが、期待通りに機能しました。ajaxloaderが永久に回転している場合は、無関係のjavascript / PHP / Serverエラーを示しているwp_mail()可能性があるため、CF7内で呼び出されることはありません。サードパーティのプラグインは、WPSEのトピックから外れていることに注意してください。@AmirMousavi
バージレ2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.