Включить HTML-файл шаблона в wp-mail

Я использую почту wp для отправки html-письма. Но в письме довольно много HTML-кода, поэтому вместо того, чтобы включать весь код в мою функцию wp mail, возможно ли иметь код в отдельном шаблоне и просто включать этот шаблон в функцию? Вот что я имею

<?php if ( isset( $_POST['submitted'] )) { add_filter('wp_mail_content_type',create_function('', 'return "text/html"; ')); $emailTo = 'person@gmail.com' ; $subject = 'This is the subject'; $body = get_template_part( 'includes/my_email_template' ); $headers = 'From: My Name' . "\r\n"; wp_mail($emailTo, $subject, $body, $headers); }?> 

Я бы хотел, чтобы весь html-код был помещен в «my_email_template», но когда я попробую это, ни одно письмо не отправляется. Я неправильно включил шаблон? Заранее благодарим за любые ответы.

Solutions Collecting From Web of "Включить HTML-файл шаблона в wp-mail"

По моему комментарию к вашему вопросу, я считаю, что проблема заключается в том, что include файлов, будь то напрямую или с помощью get_template_part вряд ли даст вам строку для передачи в $body и это вызовет ошибки в коде или на наименее неочевидное поведение.

Я бы не стал читать файлы в памяти и просто создать функцию, которая возвращает ваше $body .

 function get_email_body_wpse_96357() { $body = '<p>Hi</p>'; return $body; } 

Затем используйте $body = get_email_body_wpse_96357(); по мере необходимости. Преимущество этого метода состоит в том, что вы можете легко передать параметры функции, если вы когда-нибудь решите это сделать. Вы также можете использовать переменные во включенном файле, но это может быть беспорядочно.

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

Функция get_template_part() не возвращает HTML, а echo (она использует locate_template() которая загружает файл – echo).

Вы можете либо включить буферизацию вывода, используя ob_start() и поместить буфер в свою переменную, либо вы можете использовать file_get_contents() .

В вашем случае я считаю, что лучшим решением является следующее:

 $body = file_get_contents(TEMPLATEPATH . 'includes/my_email_template.php');