Практическое использование этой функции вы можете найти в моём видеоуроке.
Функция возвращает true
в случае успешной отправки email, однако это не означает, что письмо будет получено и прочтено.
wp_mail( $to, $subject, $message, $headers = '', $attachments = array() )
text/plain
, это значит, что HTML-теги не поддерживаются, о том, как включить их поддержку, смотрите в примерахСамый просто пример:
wp_mail('true@truemisha.ru', 'Какая-то тема', 'Какое-то сообщение');
В WordPress по умолчанию в качестве отправителя письма выставляется «WordPress»,а в качестве его email «wordpress@truemisha.ru».
Я уже писал пост о том, как изменить стандартное имя и email отправителя для всех писем, отправляемых с блога на WordPress, а сейчас рассмотрим пример только для конкретного письма:
$headers = 'From: Миша <misha@truemisha.ru>' . "\r\n"; // в виде строки wp_mail('true@truemisha.ru', 'Какая-то тема', 'Какое-то сообщение', $headers);
Для того, чтобы использовать HTML-теги в тексте сообщения, нужно изменить content-type
письма на text/html
, а это можно сделать двумя способами.
Через фильтр. В таком случае HTML-теги станет возможно использовать в любых письмах, отправляемых с блога, для этого нужно вставить в functions.php
следующий код:
add_filter('wp_mail_content_type', create_function('', 'return "text/html";'));
Через заголовки. HTML-теги будут разрешены только для конкретного письма.
$headers[] = 'Content-type: text/html; charset=utf-8'; // в виде массива wp_mail('true@truemisha.ru', 'Какая-то тема', 'Какое-то сообщение', $headers);
Кодировка письма по умолчанию соответствует кодировке блога, но ее тоже можно изменить через заголовки (предыдущий пример) или через фильтр:
add_filter('wp_mail_charset', create_function('', 'return "utf-8";'));
В предыдущем примере (и по умолчанию тоже) WordPress отправляет письма юникодом, но таким способом вы спокойно можете изменить кодировку например на Windows-1251.
В данном случае обе переменные: $attachments
и $headers
— заданы в виде массива.
$attachments[] = WP_CONTENT_DIR . '/uploads/file_1.zip'; $attachments[] = WP_CONTENT_DIR . '/uploads/file_2.zip'; $headers[] = 'From: Миша <misha@truemisha.ru>'; $headers[] = 'Content-type: text/html; charset=utf-8'; wp_mail('true@truemisha.ru', 'Какая-то тема', 'Какое-то сообщение', $headers, $attachments);
Здравствуйте! очень полезный у Вас сайт! Я делетан в этом деле, но очень нравится! Подскажите правильный путь
Я написал плагин интернет магазина, есть две проблемы, решаются они одинаково - это wp_update_post и wp_mail.
Мне нужно что бы при оформлении заказа создавалась статья с контентентом состоящим из корзины товаров:
Решение которое работает но не устраивает
если так
то соответственно записывает только последний перебор.
Еще вариант подключить фаил в контент
но в контент записывает тупо 1.
Задача: записать в контент таблицу со значениями из массива, аналогично и для wp_mail может что то подскажете, седых волос уже это прибавило!
Спасибо!
Здравствуйте!
А почему не в сессию корзину записываете?
это был первый вариант всю корзину в сессию но потом понял что достаточно только айди поста записать! Но если в сессию запишу, это же так же будет массив и его как то в разобраном виде нужно будет вставлять в контент! Может быть как то в базу напрямую можно записать? или я что то не знаю о сессиях?
сейчас в
: кей - это айди поста а валуе - это количество купленного товара
может быть подскажете хук? что бы в базе контент ансерелизовать и разобрать массив!
Всё равно не до конца понимаю задачу 🙂
Возможно вам помогут функции get_post() и
unserialize()
?Спасибо! придумал решение! add_post_meta
Это не будет нагружать вордпресс? получается я каждый товар в заказе соханяю как произвольное поле! и с помощью джейквери делаю из этого красивую табличку!
Не будет 🙂 главное кэш поставить потом.
не дадите ссылку по этому вопросу! честно говоря не изучал этот вопрос!
Просто поставите плагин WP Super Cache и всё будет хорошо — это необходимо в том случае, если у вас будет большой поток посетителей, больше 500 в сутки.
Благодарю!
Миша подскажи, отправляю через функцию wp_mail письма приходят на почту с другим временем, не с моим локальным указанным на сервере. Как можно это поправить?
Чтобы письма приходили по правильному времени?
Какие настройки указать с временной датой
Жаль, что этот сайт давно не обновлялся(
Угу, целых три дня