Wordpress Контактная форма 7 Динамическая почта для электронной почты Содержимое на основе ввода пользователя?

В контактной форме, которую я использую, есть раскрывающееся меню "Штат / провинция", в котором для указания динамического получателя используется команда канала. Так, например, NJ установит для получателя письма значение "NJEmail@example.com", а для CA - "CAEmail@example.com".

Но сейчас мне нужно, чтобы содержимое письма динамически изменялось в зависимости от того, является ли получатель NJEmail@example.com или CAEmail@example.com.

В частности, необходимо добавить дополнительную контактную информацию, такую ​​как номер телефона CAEmail и его полное имя (это электронное письмо отправляется пользователю). Я использую контактную форму 7 с надстройкой динамического расширения текста. Я думаю, что это возможно, но так как я новичок в Wordpress, я не уверен, что мне нужно напрямую связываться с PHP, или я могу решить эту проблему, используя некоторую сложную работу с динамическими текстовыми областями (или динамическими Скрытые текстовые области).

С точки зрения программиста, я бы просто использовал операторы IF. Если отправка отправлена ​​в Нью-Йорк, напишите "Контактная информация Нью-Йорка" и отправьте электронное письмо. И я бы просто перебил возможности (не у каждого государства есть уникальный получатель. Есть только несколько возможностей... около 10). Но я не уверен, как это сделать в Wordpress, используя контактную форму 7. Может ли кто-нибудь указать мне правильное направление?

Вся помощь очень ценится!

2 ответа

Решение

Я бы порекомендовал следовать этому руководству здесь: http://wordpress.org/support/topic/plugin-contact-form-7-this-is-how-to-showhide-fields-with-jquery?replies=8

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

1. Добавьте скрипт JQuery в свою тему. Загрузите и сохраните скрипт jQuery из официального источника здесь и сохраните его в /js/1.7.1/ папка для вашей темы. Вам может понадобиться создать папки, если они еще не созданы для вашей темы (пример: ./wordpress/wp-content/themes/your-theme-name/js/1.7.1/)

2. Создайте простую форму, используя контактную форму 7 Вот код для формы:

<div id="contactForm">
<h2>Send us an email...</h2>
  <ul>
    <li>
      <label for="senderName">Your Name</label>[text* senderName /40 id:senderName class:contactForm "Please type your name"]
    </li>
    <li>
      <label for="awesome">Are you awesome?</label>[select awesome id:awesome include_blank class:contactForm "Hell yes!" "Sometimes" "Nope"]
    </li>
    <li>
      <div class="hide" id="hide1">
      <label for="not-awesome">Tell us why not</label>[text not-awesome /50 id:not-awesome class:contactForm "Tell us why you aren't awesome"]
       </div>
    </li>
    <li>
      <label for="senderEmail">Your Email Address</label>[email* senderEmail /50 id:senderEmail class:contactForm "Please type your email address"]
    </li>
    <li>
      <label for="message" style="padding-top: .5em;">Your Message</label>[textarea* message 80x10 id:message class:contactForm "Please type your message"]
    </li>
  </ul>
  <div id="formButtons">[submit id:sendMessage class:contactForm "Send Email"]
  </div>
</div>

Источник: http://pastebin.com/jQeQqRhj

Чтобы следовать моему примеру, вам нужно создать ту же самую простую форму, которую я сделал. Неважно, что вы называете формой, но она должна иметь те же поля и атрибуты.

3. Создайте скрипт jQuery для скрытия полей. Создайте скрипт с именем hidefieldsScript.js используя этот код:

/*! jQuery script to hide certain form fields */

$(document).ready(function() {

    //Hide the field initially
    $("#hide1").hide();

    //Show the text field only when the third option is chosen - this doesn't
    $('#awesome').change(function() {
        if ($("#awesome").val() == "Nope") {
            $("#hide1").show();
        }
        else {
            $("#hide1").hide();
        }
    });
});

Источник: http://pastebin.com/eUdEcHhC

Создайте его и сохраните прямо в js папка для вашей темы (пример: ./wordpress/wp-content/themes/your-theme-name/js/,

4. Добавьте некоторые основные стили для формы

Добавьте следующий код в конец вашей темы style.css файл:

/* =Custom Contact Form with jQuery
----------------------------------------------- */

/* Add curved borders to various elements */
#contactForm, .statusMessage, input[type="submit"], input[type="button"] {
  -moz-border-radius: 10px;
  -webkit-border-radius: 10px;  
  border-radius: 10px;
}

/* Style for the contact form and status messages */
#contactForm, .statusMessage {
  color: #666;
  background-color: #ebedf2;
  background: -webkit-gradient( linear, left bottom, left top, color-stop(0,#dfe1e5), color-stop(1, #ebedf2) );
  background: -moz-linear-gradient( center bottom, #dfe1e5 0%, #ebedf2 100% );  
  border: 1px solid #aaa;
  -moz-box-shadow: 0 0 1em rgba(0, 0, 0, .5);
  -webkit-box-shadow: 0 0 1em rgba(0, 0, 0, .5);
  box-shadow: 0 0 1em rgba(0, 0, 0, .5);
  opacity: .95;
}

/* The form dimensions */
#contactForm {
  width: 40em;
  height: 41em;
  padding: 0 1.5em 1.5em 1.5em;
  margin: 0 auto;
}

/* Position the form in the middle of the window (if JavaScript is enabled) */
#contactForm.positioned {
  position: fixed;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  margin-top: auto;
  margin-bottom: auto;
}


/* The header at the top of the form */
#contactForm h2 {
  font-size: 2em;
  font-style: italic;
  letter-spacing: .05em;
  margin: 0 0 1em -.75em;
  padding: 1em;
  width: 19.5em;  
  color: #aeb6aa;
  background: #dfe0e5 url('images/stamp.jpg') no-repeat 15em -3em; /* http://morguefile.com/archive/display/606433 */
  border-bottom: 1px solid #aaa;
  -moz-border-radius: 10px 10px 0 0;
  -webkit-border-radius: 10px 10px 0 0;  
  border-radius: 10px 10px 0 0;
}

/* Give form elements consistent margin, padding and line height */
#contactForm ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

#contactForm ul li {
  margin: .9em 0 0 0;
  padding: 0;
}

#contactForm input, #contactForm label {
  line-height: 1em;
}

/* The field labels */
#contactForm label {
  display: block;
  float: left;
  clear: left;
  text-align: right;
  width: 28%;
  padding: .4em 0 .0 0;
  margin: .15em .5em 0 0;
  font-weight: bold;
}

/* The fields */
#contactForm input, textarea , select {
  display: block;
  margin: 0;
  padding: .4em;
  width: 67%;
  font-family: "Georgia", serif;
  font-size: 1em;
  border: 1px solid #aaa;
  -moz-border-radius: 5px;
  -webkit-border-radius: 5px;    
  border-radius: 5px;
  -moz-box-shadow: rgba(0,0,0,.2) 0 1px 4px inset;
  -webkit-box-shadow: rgba(0,0,0,.2) 0 1px 4px inset;
  box-shadow: rgba(0,0,0,.2) 0 1px 4px inset;
  background: #fff;
}

#contactForm textarea {
  height: 13em;
  line-height: 1.5em;
  resize: none;
}


/* Place a border around focused fields, and hide the inner shadow */
#contactForm *:focus {
  border: 1px solid #66f;
  outline: none;
  box-shadow: none;
  -moz-box-shadow: none;
  -webkit-box-shadow: none;
}

/* The Send and Cancel buttons */
#contactForm input[type="submit"], #contactForm input[type="button"] {
  float: right;
  margin: 2em 1em 0 1em;
  width: 10em;
  padding: .5em;
  border: 1px solid #666;
  -moz-border-radius: 10px;
  -webkit-border-radius: 10px;  
  border-radius: 10px;
  -moz-box-shadow: 0 0 .5em rgba(0, 0, 0, .8);
  -webkit-box-shadow: 0 0 .5em rgba(0, 0, 0, .8);
  box-shadow: 0 0 .5em rgba(0, 0, 0, .8);
  color: #fff;
  background: #0a0;
  font-size: 1em;
  line-height: 1em;
  font-weight: bold;
  opacity: .7;
  -webkit-appearance: none;
  -moz-transition: opacity .5s;
  -webkit-transition: opacity .5s;
  -o-transition: opacity .5s;
  transition: opacity .5s;
}

#contactForm input[type="submit"]:hover,
#contactForm input[type="submit"]:active,
#contactForm input[type="button"]:hover,
#contactForm input[type="button"]:active {
  cursor: pointer;
  opacity: 1;
}

#contactForm input[type="submit"]:active, input[type="button"]:active {
  color: #333;
  background: #eee;
  -moz-box-shadow: 0 0 .5em rgba(0, 0, 0, .8) inset;
  -webkit-box-shadow: 0 0 .5em rgba(0, 0, 0, .8) inset;
  box-shadow: 0 0 .5em rgba(0, 0, 0, .8) inset;
}

#contactForm input[type="button"] {
  background: #f33;
}


/* Some IE7 hacks and workarounds */

<!--[if lt IE 8]>
/* IE7 needs the fields to be floated as well as the labels */
#contactForm input, textarea {
  float: right;
}

#formButtons {
  clear: both;
}

/*
  IE7 needs an ickier approach to vertical/horizontal centring with fixed positioning.
  The negative margins are half the element's width/height.
*/
#contactForm.positioned, .statusMessage {
  left: 50%;
  top: 50%;
}

#contactForm.positioned {
  margin-left: -20em;
  margin-top: -16.5em;
}
<![endif]-->

Источник: http://pastebin.com/7fMA4nDn

Я рекомендую сделать это, чтобы вы могли видеть пример правильно. CSS, который я сделал, полностью относится к элементу id "contactForm", поэтому он не загрязняет дизайн вашей темы.

5. Добавьте сценарии в ваш header.php. Добавьте следующие строки в ваш <head> класс внутри header.php файл для вашей темы.

<!-- Add jquery script to support Conditional Forms-->
<script type="text/javascript" src="<?php echo get_stylesheet_directory_uri(); ?>/js/1.7.1/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="<?php echo get_stylesheet_directory_uri(); ?>/js/hidefieldsScript.js"></script>

6. Проверьте форму! Вставьте код формы из контактной формы 7 на страницу или сообщение, затем просмотрите страницу. Вы должны увидеть форму, но одно из полей будет скрыто.

Чтобы увидеть скрытое поле, просто ответьте "Нет" на вопрос "Вы классные?". Появится дополнительная строка с просьбой объяснить, почему!

Как вы изменили пример? Чтобы это работало для ваших собственных конкретных нужд, вам нужно изменить шаги 2 и 3, чтобы форма и jQuery работали вместе, чтобы скрыть поля, которые вы хотите, чтобы они были. Вам также нужно будет изменить шаг 4, чтобы получить стиль CSS, который вы предпочитаете.

Я предлагаю сделать то, что я сделал, и прочитать о том, что означают функции jQuery. Есть множество учебников, объясняющих функции jQuery, так что получите Googling.

Немного прочитав, вы можете настроить сценарий, к которому я написал, для обработки ответов на флажки, переключатели и т. Д.

Вы также можете использовать надстройку (условные поля) для контактной формы 7. Как вы уже упоминали для "Динамических скрытых текстовых областей". Таким образом, конкретная группа должна появляться только в том случае, если конечный пользователь выберет ее.Например: в выпадающем меню появляется несколько опций: NJ, NY, TX... и т. Д. В зависимости от выбора пользователя, появится NJ "группа".

Я не уверен, что понял, что ты имел в виду.

Пример плагина: https://wordpress.org/plugins/cf7-conditional-fields/

Другие вопросы по тегам