Intereting Posts
Добавление информации о продукте для печати на пользовательскую вкладку «Отображение продукта Woocommerce» _deprecated_argument для констант Какие символы разрешены как тег короткого кода и как их следует дезинфицировать? используйте jQuery.load (), чтобы включить php-файл в div, wp_query () является частью файла php the_meta – нет запроса get_the_meta? Предел памяти PHP против ограничения памяти WP Избегайте повторного сообщения на стр. 2, если исключить его на странице 1 WP_Query со смещением и 'orderby' => 'rand', смещение не работает Рекомендации, необходимые для импорта настраиваемых полевых данных и структуры базы данных Как включить параметры комментариев? нежелательные теги P в shortcode, задержка wpautop не работает как получить идентификатор страницы на странице с помощью slug страницы Пользовательский цикл для пользовательского типа сообщения Как проверить дубликат записи перед вставкой с помощью wpdb WooCommerce: Webhook отключен самостоятельно

Включить 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');