ฉันต้องการทำบางสิ่งหลังจาก 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