Контактная форма 7: отправить значение по умолчанию на почту, если текстовая область пуста

[ваше имя] У меня есть контактная форма7 3.7 с полем textarea как:

<p>Message (optional)<br />
[textarea my-message]</p>

И формат почты:

From :    [your-name] | [your-email]
Message : [my-message]

Теперь, в настоящее время текстовое поле пусто.
Если пользователь не заполняет какие-либо данные в окне сообщения, письмо отправляется с пустым полем.
Как отправить значение «Нет» по умолчанию, если текстовое поле пусто?


person zeetit    schedule 20.02.2014    source источник
comment
Проверьте значения для [my-message], если можете. Если он пуст, присвойте какое-либо значение [my-message]   -  person Sushil Kandola    schedule 20.02.2014
comment
Спасибо Сушил, я попытался добавить проверку/фильтр с помощью $_POST[$name] = None; //Если пусто. Но добавление этого привело к сбою всей страницы   -  person zeetit    schedule 21.02.2014
comment
Может быть синтаксическая ошибка в $_POST[$name]. Попробуйте использовать $_POST[name_of_textfield]. Или может быть другой способ прочитать значения сообщений в контактной форме 7.   -  person Sushil Kandola    schedule 21.02.2014
comment
Наконец-то я заставил $_POST[$name] работать. Но в почте поле пустое. При проверке элемента он имеет значение: None   -  person zeetit    schedule 21.02.2014
comment
Тогда либо переменная не назначена должным образом [my-message], либо ваша переменная где-то перезаписана. Пройдите правильно через код, там будет какая-то скрытая магия.   -  person Sushil Kandola    schedule 21.02.2014
comment
спасибо большое.. работаю над этим...   -  person zeetit    schedule 21.02.2014


Ответы (5)


Это заняло некоторое время, чтобы найти, и может потребоваться некоторая работа, но попробуйте это в своем файле functions.php:

add_action("wpcf7_posted_data", "wpcf7_modify_this");
function wpcf7_modify_this($posted_data) {

    // if user leaves the message area blank, set to "None"
    if ($posted_data['my-message'] == "")
        $posted_data['my-message'] = "None";

    // generic example
    if ( /* some logic */ )
        $posted_data['/* cf7-field-name */'] = "ValueToEmail";

    return $posted_data;
}

Следует отметить, что проверка выполняется до этого момента, поэтому, если вы разрешаете пользователям вводить пустое значение, не делайте его обязательным.

person DACrosby    schedule 15.05.2014

В соответствии с веб-сайтом Contact Form 7 вы можете указать значения по умолчанию.

Пример:

[email* your-email default:user_email]

Это заполнит поле текущим адресом электронной почты пользователя.

дополнительная информация здесь

person danyo    schedule 20.02.2014
comment
Спасибо Danyo, но установка значения по умолчанию показывает то же самое в интерфейсе. - person zeetit; 21.02.2014

Это очень просто.
Выберите параметр Текстовая область в раскрывающемся меню создать тег при создании контактной формы.
И есть параметр для установки значения по умолчанию.
Автор используя эту опцию, вы можете установить значение по умолчанию для текстовой области. Я прикрепил сюда одно изображение...
На этом изображении я показал подробности.

ContactForm7  Добавить новую форму

Это работает для меня...
Надеюсь, это также работает для вас.

person bv.ebizzinfotech    schedule 21.02.2014
comment
Спасибо, Бхавеш, но я требую, чтобы в интерфейсе не отображалось значение по умолчанию. Но отправить на почту, если поле пустое - person zeetit; 21.02.2014
comment
если текстовая область пуста, то отправить значение по умолчанию? - person bv.ebizzinfotech; 21.02.2014
comment
да.. Я создал фильтр для того же и вставил значение.. но оно не доходит по почте - person zeetit; 21.02.2014

Я попробовал код, предоставленный @DACrosby выше, но он у меня не сработал. Поэтому я удалил какой-то код и изменил его на этот, и тогда он отлично работает!

add_action("wpcf7_posted_data", "wpcf7_modify_this");
function wpcf7_modify_this($posted_data) {

    // if user leaves the message area blank, set to "None"
    if ($posted_data['my-message'] == "")
        $posted_data['my-message'] = "None";

    // generic example
    if ( /* some logic */ )
        $posted_data['/* cf7-field-name */'] = "ValueToEmail";

    return $posted_data;
}
person Vasco    schedule 31.12.2020

Насколько я знаю, вы не можете сделать это с контактной формой 7.

person Tom    schedule 20.02.2014