Функция, которую вы вводите в 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);
}
}