首页 > 解决方案 > wp_mail 不断发送相同的邮件

问题描述

我想用来wp_mail向我发送一些数据,但这应该只做一次。为了避免连续发送邮件,我创建了一个额外的选项。然而,当我测试它时,它仍然一遍又一遍地发送相同的邮件。

我的代码如下:

function track_details_admin() {

    if( ! current_user_can('administrator') && ! is_admin ) {   
        return false;   
    } 

    $tracking = get_option('track_details');

        // mail settings                 
        $send_mail = wp_mail( $to, $subject, $message, $headers );

        // Send mail only if it wasn't sent before
        if( $tracking === false && $tracking != '1' ) {
            $send_mail; 
        }

        // If email is sent succesfully update option so it won't be sent again
        if( $send_mail ) {

            //If option already exists, update else create new
            if ( $tracking !== false ) {
                update_option( 'track_details', '1' );
            } else {
                add_option( 'track_details', '1' );
            }

        } 

}
add_action( 'admin_init', 'track_details_admin', 99 );

在选项表中,我可以看到该选项是在发送邮件后'track_details'创建并设置的。1

非常感谢您在正确方向上的任何帮助。

标签: phpwordpress

解决方案


您可以尝试以下脚本,该脚本具有不同的方法来检测是否发送了邮件。我使用的实际上$is_sent是变量,0但是一旦发送电子邮件或 if 语句为真,该$is_sent值将被更新并变为1

function track_details_admin() {

    if( ! current_user_can('administrator') && ! is_admin ) {   
        return false;   
    } 

    $tracking = get_option('track_details');

        // mail settings                 
        $send_mail = wp_mail( $to, $subject, $message, $headers );

        $is_sent = 0;

        // Send mail only if it wasn't sent before
        if( $tracking === false && $tracking != '1' ) {
            $send_mail; 
            $is_sent = 1;
        }

        // If email is sent succesfully update option so it won't be sent again
        if( $is_sent == 1 ) {

            //If option already exists, update else create new
            if ( $tracking !== false ) {
                update_option( 'track_details', '1' );
            } else {
                add_option( 'track_details', '1' );
            }

        } 

}
add_action( 'admin_init', 'track_details_admin', 99 );

推荐阅读