Условный оператор wp_mail при публикации записи
В настоящее время я публикую записи через фронтенд, используя модель, подобную http://voodoopress.com/2011/03/review-of-posting-from-front-end-form/. Мне нужно отправлять email на разные адреса в зависимости от значения поля "problem_type". Вот что у меня есть на данный момент. Этот код ничего не отправляет, и я зашел в тупик. Идеи? Мне нужно всего 3 разных email: один если значение "phones", второй если "computers", а все остальные значения должны отправляться на третий email.
function new_post_creation_email($pid) {
// Получаем значение пользовательского поля problem_type
$problem_type = get_post_meta($pid, 'problem_type', true);
$description = 'post_content';
// Определяем получателя в зависимости от типа проблемы
if ($problem_type == 'phones') {
$to = '1st email here';
} elseif ($problem_type == 'computers') {
$to = '2nd email here';
} else {
$to = '3rd email here';
}
// Формируем тему письма
$subject = "New Ticket in ' . echo get_post_meta($pid, 'problem_type', true) . ";
// Формируем текст письма
$message = "A user profile has been updated\n\n";
$message .= print_r($description,true);
// Отправляем письмо
@wp_mail( $to, $subject, $message);
}
// Подключаем функцию к хуку создания поста
add_action('wp_insert_post','new_post_creation_email');
Очевидно, что "1st email here" и подобные были заменены на реальные email адреса в рабочем коде.

Вот несколько моментов:
- Вы смешиваете ' и " в очень плохой манере!
- Вы используете
echo
внутри строки. Не делайте так. - Вы подавляете все ошибки в функции
wp_mail
, поэтому если WordPress выдаст ошибку, вы её не увидите!
Сначала исправьте проблему с ' и ". Ваше определение $subject
должно выглядеть так:
$subject = "Новый тикет в " . get_post_meta($pid, 'problem_type', true);
Это исправление также решает проблему с echo
.
Затем удалите символ @
перед wp_mail
и включите WP_DEBUG в ваших конфигурационных файлах, чтобы видеть возникающие ошибки.
