Fehler beim Verwenden von wp_mail in der benutzerdefinierten function

Ich habe diese function, die verschiedene E-Mails für mich sendet:

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; } 

Ich benutze es, damit ich den Inhaltstyp nicht jedes Mal manuell einstellen muss, wenn ich wp_mail verwende. Aber wenn ich diese function in einer anderen function mehr als einmal verwende, so:

 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 ); } } 

Die erste E-Mail wird Fatal error: Cannot redeclare tps_set_html_email_content_type()... , aber die zweite E-Mail Fatal error: Cannot redeclare tps_set_html_email_content_type()... den Fehler aus Fatal error: Cannot redeclare tps_set_html_email_content_type()... (dies ist eine function innerhalb meiner tps_send_email() function).

Was habe ich falsch gemacht?

Solutions Collecting From Web of "Fehler beim Verwenden von wp_mail in der benutzerdefinierten function"

Das liegt daran, dass Sie die function tps_set_html_email_content_type in tps_send_email eingefügt haben , und jedes Mal, wenn Sie sie aufrufen, wird die function tps_set_html_email_content_type erneut deklariert. Verschiebe es einfach:

 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; } 

Ich bin mir nicht sicher, warum Sie eine function in eine andere einfügen sollten, aber das ist nie eine gute Idee, auch wenn PHP dies unterstützt.