Ошибка при использовании wp_mail внутри пользовательской функции

У меня есть эта функция, которая отправляет мне различные письма:

function tps_send_email($emailTo, $subject, $content) { //Allow HTML in email function tps_set_html_email_content_type() { return 'text/html'; } add_filter( 'wp_mail_content_type', 'tps_set_html_email_content_type' ); //Send the email $mailSent = wp_mail($emailTo, $subject, $content); //Reset HTML content type back to text only (avoids conflicts) remove_filter( 'wp_mail_content_type', 'tps_set_html_email_content_type' ); return $mailSent; } 

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

 function my_custom_function(){ $mailTo = 'anemail@email.com'; $subject = 'Some subject line'; $emailTemplate1 = 'template 1 content goes here'; tps_send_email($emailTo, $subject, $emailTemplate1 ); if (some condition) { $emailTemplate2 = 'template 2 content goes here'; //send another email tps_send_email($emailTo, $subject, $emailTemplate2 ); } } 

Первое электронное письмо отправляется штрафом, но второе письмо вызывает ошибку. Fatal error: Cannot redeclare tps_set_html_email_content_type()... (что является функцией внутри моей функции tps_send_email() ).

Что я сделал не так?

Solutions Collecting From Web of "Ошибка при использовании wp_mail внутри пользовательской функции"

Это потому, что вы положили функцию tps_set_html_email_content_type внутри tps_send_email , и каждый раз, когда вы ее вызываете, она снова объявит функцию tps_set_html_email_content_type . Просто переместите его:

 function tps_set_html_email_content_type() { return 'text/html'; } function tps_send_email($emailTo, $subject, $content) { add_filter( 'wp_mail_content_type', 'tps_set_html_email_content_type' ); //Send the email $mailSent = wp_mail($emailTo, $subject, $content); //Reset HTML content type back to text only (avoids conflicts) remove_filter( 'wp_mail_content_type', 'tps_set_html_email_content_type' ); return $mailSent; } 

Я не уверен, почему вы поставили бы одну функцию внутри другой, но это никогда не будет хорошей идеей, даже если PHP ее поддерживает.