ฉันต้องการทำบางสิ่งหลังจาก WordPress ส่งอีเมล ตัวอย่างเช่นหลังจากส่งอีเมล "รีเซ็ตรหัสผ่าน" โดยใช้wp_mail()ฟังก์ชั่น
ฉันต้องการทำบางสิ่งหลังจาก WordPress ส่งอีเมล ตัวอย่างเช่นหลังจากส่งอีเมล "รีเซ็ตรหัสผ่าน" โดยใช้wp_mail()ฟังก์ชั่น
คำตอบ:
ฉันไม่บางขุดลงไปในPHPMailerชั้นเรียนและพบว่ามันสนับสนุนการกระทำที่กำหนดเอง
นี่คือวิธีการเปิดใช้งานการโทรกลับด้วยdoCallback()วิธีการในชั้นเรียน
นอกจากนี้ยังมีPHPMailer การทดสอบ GitHub โดยใช้คุณสมบัตินี้ผ่านการ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