Wordpress, wp_mail отправляем дважды - PullRequest
0 голосов
/ 25 мая 2018

Я использую этот фрагмент для отправки электронной почты пользователям, когда их сообщение удалено, оно работает, но отправляет одно и то же сообщение дважды, любая помощь, пожалуйста

function authorNotification($post_id) {
global $wpdb;
$post = get_post($post_id);
$author = get_userdata($post->post_author);
$message = "
Hi ".$author->display_name.",
We are sorry to inform you that your article, ".$post->post_title." has been declined. We strongly recommend you to go through the guest posting guidelines before you submit an article again.
";
wp_mail($author->user_email, "Declined", $message);
}
add_action('delete_post', 'authorNotification');

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Функция, которую вы вводите в delete_post, выполняется столько раз, сколько необходимо.

Когда вы удаляете сообщение, вы также удаляете все его ревизии, поэтому функция будет выполняться более одного раза, если в посте есть ревизии.и в зависимости от того, сколько их было.

Чтобы избежать выполнения вашей функции каждый раз, когда WordPress удаляет записи из базы данных, вы можете использовать did_action( $hook ).

Эта функция возвращает количество выполненных хуков.Мы можем использовать это, чтобы исправить проблему с множественным выполнением, поместив оператор if.

function authorNotification($post_id) {

    global $wpdb;

    $post = get_post($post_id);

    $author = get_userdata($post->post_author);

    $message = "Hi ".$author->display_name.", We are sorry to inform you that your article, ".$post->post_title." has been declined. We strongly recommend you to go through the guest posting guidelines before you submit an article again.";

    if (did_action('delete_post') === 1){
        //only send once
        wp_mail($author->user_email, "Declined", $message);
    }
}
0 голосов
/ 25 мая 2018

Не могу сказать, что здесь происходит не так.Функция, кажется, работает правильно.

Я подозреваю, что вы вызываете функцию authorNotification () дважды где-то в вашем коде, может быть, delete_post вызывается дважды?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...