Tôi muốn làm một cái gì đó sau khi WordPress gửi email. Ví dụ: sau khi gửi email "Đặt lại mật khẩu" bằng wp_mail()
chức năng.
Tôi muốn làm một cái gì đó sau khi WordPress gửi email. Ví dụ: sau khi gửi email "Đặt lại mật khẩu" bằng wp_mail()
chức năng.
Câu trả lời:
Tôi đã đào sâu vào PHPMailer
lớp và thấy rằng nó hỗ trợ một hành động tùy chỉnh .
Đây là cách gọi lại được kích hoạt với doCallback()
phương thức trong lớp.
Ngoài ra còn có một PHPMailer
thử nghiệm trên GitHub bằng tính năng này thông qua cuộc callbackAction()
gọi lại.
Chúng tôi có thể thiết lập nó trong WordPress với:
$phpmailer->action_function = 'wpse_mail_action';
nơi wpse_mail_action()
là gọi lại hành động.
Đây là một ví dụ về cách chúng ta có thể áp dụng điều này:
/**
* 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';
} );
Bây giờ chúng tôi có quyền truy cập vào wpse_mail_action
hook.
Sau đó chúng tôi có thể thêm trình ghi nhật ký thư của riêng mình và kiểm tra xem thư có được gửi thành công hay không.
Đây là một ví dụ (chưa được kiểm tra) làm thế nào chúng ta có thể làm gì đó sau khi bài viết "Đặt lại mật khẩu" được gửi:
/**
* 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 );
nơi chúng ta có thể thêm một số hạn chế hơn nữa và gói gọn vào các hành động khác nếu không cần thiết, như retrieve_password
hook.
wp_mail()
có thể không bao giờ được gọi trong CF7. Lưu ý rằng các plugin của bên thứ 3 không có chủ đề ở đây trên WPSE. @AmirMousavi