Условный оператор wp_mail при публикации записи

8 июл. 2011 г., 18:58:47
Просмотры: 577
Голосов: 0

В настоящее время я публикую записи через фронтенд, используя модель, подобную 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 адреса в рабочем коде.

1
Комментарии

можно ли использовать print_r() в присваивании? Я так не думаю.

Milo Milo
8 июл. 2011 г. 19:09:03
Все ответы на вопрос 1
1

Вот несколько моментов:

  1. Вы смешиваете ' и " в очень плохой манере!
  2. Вы используете echo внутри строки. Не делайте так.
  3. Вы подавляете все ошибки в функции wp_mail, поэтому если WordPress выдаст ошибку, вы её не увидите!

Сначала исправьте проблему с ' и ". Ваше определение $subject должно выглядеть так:

$subject = "Новый тикет в " . get_post_meta($pid, 'problem_type', true);

Это исправление также решает проблему с echo.

Затем удалите символ @ перед wp_mail и включите WP_DEBUG в ваших конфигурационных файлах, чтобы видеть возникающие ошибки.

8 июл. 2011 г. 19:13:57
Комментарии

Спасибо, EAMann! Это сработало... Я смущенно улыбаюсь разместил это в шаблоне страницы, который создавал запись. Окончательное решение было поместить эту функцию в functions.php. Прекрасно!

Matt Pritchett Matt Pritchett
8 июл. 2011 г. 20:17:26