Создание всплывающей формы Contact Form 7
Нет ничего проще чем создавать всплывающие формы (Popup) на вашем сайте с помощью плагина EasyFancybox. Для этого устанавливаем и активируем его.
Далее аходим на страницу Настройки->Медиафайлы, и ищем следующий блок как на картинке. Отмечаем птичкой «inline-content», а так же устанавливаем ширину popup окна(У меня 320px).
Далее необходимо разобраться что именно будет отображаться в popup окне, и где именно будет расположена ссылка или кнопка.
Создание формы.
Я надеюсь вы знаете как создавать формы в Contact Form7, но если не знаете, вместе с установкой данного плагина автоматически создаётся Тестовая форма.
Нам нужно взять шорткод данной формы, и вставить его между HTML кодом
<div id="popup_form">[contact-form-7 id=»721″ title=»Контактная форма 1″]
</div>
Данный шорткод лишь пример, у вашей формы он будет с другим ID, и другим названием. Имейте это ввиду.
<a href="#popup_form" id="popup_button" class="fancybox-inline">Обратная связь</a> <div style="display:none" class="fancybox-hidden"> <div id="popup_form"> [contact-form-7 id="721" title="Контактная форма 1"] </div> </div>
Обратите внимание, что в качестве названия кнопки я указал «Обратная связь». Прежде чем оформлять дизайн кнопки, давайте определимся, где именно её отображать?
Есть несколько вариантов:
- Добавить данный код в уже созданный сайдбар на сайте.
- Добавить HTML код в текст записи или страницы
- Добавить HTML код в шаблон записи
- Создать новый сайдбар, и добавить php код в шаблон темы
- Создание шорткода
Первый вариант
Переходим на страницу Внешний вид->Виджеты, затем нажимаем HTML код. Выбираем сайдбар из списка, и нажимаем Добавить виджет. Обратите внимание, что сайдбары с названием «Под страницей» или «Под статьё», я создавал самостоятельно, поэтому у вас их не будет.
В текстовое поле вставляем наш код и нажимаем кнопу сохранить:
Вот в принципе и всё, если место где отображается кнопка вас устраивает, можно перейти к её оформлению. В моём случае она отобразилась под текстом страницы, именно там я добавил созданный ранее сайдбар.
Стандартное отображение меня совершенно не впечатляет, поэтому добавим нашей кнопке зелёный фон и белый текст, а так же закруглим её. Данный код можно использовать для всех последующих вариантов отображения кнопки.
.fancybox-inline { border-radius: 10px; background-color: #10da83; padding: 10px; color: #fff; }
Данный css код прописываем в файл стилей вашей темы. Для этого переходим в раздел Внешний вид->Редактор, и открываем файл style.css. В конец или начала файла пишем выше указанный код.
Уже лучше правда?
Но отображение самой popup формы жутковатое, поэтому нужно добавить отступ внутри popup окна, а так же уменьшить отступы между полями.
В тот же css файл добавляем следующий код:
/* Добавляем отступы */ #popup_form { padding: 15px; } /*Убираем отступы у тэга p*/ #popup_form p { padding: 0px; margin: 0px; } /*У названия поля уменьшаем размер*/ #popup_form label { font-size: 15px; } /*Уменьшаем высоту текстового поля*/ #popup_form textarea{ height:100px; } /*Добавим отступ после название поля и после него*/ #popup_form span{ padding-top:10px; padding-bottom:10px } /*Устанавливаем одинаковую высоту текстовых полей и ширину в 100%*/ #popup_form input[type='text'],#popup_form input[type='email']{ height:30px; width: 100%; } #popup_form textarea{width:100%}
У нас получится вот такая форма.
Второй вариант (Добавление кода в тело записи)
Данный вариант совершенно точно отобразит кнопку в том месте записи где вы пожелаете, но кнопку придётся добавлять на все страницы, что не совсем удобно.
Копируем код
<a href="#popup_form" id="popup_button" class="fancybox-inline">Обратная связь</a> <div style="display:none" class="fancybox-hidden"> <div id="popup_form"> Шоркод формы Contact Form 7 </div> </div>
И добавляем его в текст любой страницы или записи
Третий вариант (Добавить код в шаблон записи или страницы)
В каждом шаблоне WordPress, существует набор файлов:
— header.php (Шапка страницы)
— content.php (Сам контент — середина)
— footer.php (Низ страницы)
— single.php (отдельная запись)
— page.php (отдельная страница)
Нужно определиться где именно мы хотим добавить кнопку? Добавим её под записью(не путать со страницей)
Переходим в меню Внешний вид->Редактор и в правой колонке ищем шаблон с нашей записью, в моём случае это файл content-single.php, в вашем случае это может быть single.php. В каждом шаблоне могут быть разные файлы. В содержимом шаблона, для отображения текста записи существует функция the_content, я её выделил на рисунке.
Теперь нужно взять наш HTML код с виджетом (он чуть чуть изменён), и добавить его перед или после функции the_content (1 или 2)
<a href="#popup_form" id="popup_button" class="fancybox-inline">Обратная связь</a> <div style="display:none" class="fancybox-hidden"> <div id="popup_form"> <?php echo do_shortcode('Шорткод с формой Contact Form 7');?> </div> </div>
Обратите внимание, что я добавил функцию do_shortcode, которая обрабатывает шорткод и выводит полученный результат на экран.
Четвёртый вариант (Создание сайдбара).
С помощью данного способа мы сможем нашу кнопку показать на всех страницах и записях под или над самим текстом.
В первую очередь создадим САЙДБАР, для этого переходим в меню Внешний вид->Редактор, и в правой колонке выбираем файл function.php
Для регистрации нового сайдбара существует функция register_sidebar(). Пропишем данную функция в function.php, и жмём кнопку сохранить.
register_sidebar(array('name'=>'Под страницей или записью','id'=>'popup_button'));
У функции register_sidebar есть различные параметры, в данном случае я добавил лишь название (name) и ID (popup_button).
Если всё сделано правильно, то на странице с Виджетами (Внешний вид-> виджеты) у нас появится новый виджет.
На новый виджет «Под страницей или записью» переносим HTML код (1), а затем в его содержимое добавляем код (2), и сохраняем (3).
<a href="#popup_form" id="popup_button" class="fancybox-inline">Обратная связь</a> <div style="display:none" class="fancybox-hidden"> <div id="popup_form"> Шорткод формы Contact Form 7 </div></div>
Теперь у нас есть виджет с кодом, и он никуда не денется, главное его не удалить. Осталось отобразить наш сайдбар в теле страницы. Как это сделать? Для этого существует функция dynamic_sidebar();
Опять заходим в меню Внешний Вид ->Редактор, и в файле function.php, нам нужно прописать код, который отобразит сайдбар в теле записи или страницы.
add_action('the_content','replace_content'); function replace_content($con){ ob_start(); dynamic_sidebar('popup_button'); $text=ob_get_contents(); ob_end_clean(); echo do_shortcode($con.$text); }
С помощью хука add_action мы фильтруем текст страницы или записи, и добавляем наш сайдбар dynamic_sidebar(‘popup_button’); в конец текста.
В принципе достаточно взять код dynamic_sidebar(‘popup_button’); и вставить его в любое место шаблона (header.php или footer.php), но обратите внимание, что данный код добавлять внутри <?php ?>
Если сайдбар нужно подключить вне php кода используем конструкцию
<?php dynamic_sidebar('popup_button'); ?>
Надеюсь, что один из вариантов помог разобраться где именно показать кнопку, и ещё раз напомню для оформление кнопки достаточно добавить css код в файл стилей (styles.css)
.fancybox-inline { border-radius: 10px; background-color: #10da83; padding: 10px; color: #fff; } /* Добавляем отступы */ #popup_form { padding: 15px; } /*Убираем отступы у тэга p*/ #popup_form p { padding: 0px; margin: 0px; } /*У названия поля уменьшаем размер*/ #popup_form label { font-size: 15px; } /*Уменьшаем высоту текстового поля*/ #popup_form textarea{ height:100px; } /*Добавим отступ после название поля и после него*/ #popup_form span{ padding-top:10px; padding-bottom:10px } /*Устанавливаем одинаковую высоту текстовых полей и ширину в 100%*/ #popup_form input[type='text'],#popup_form input[type='email']{ height:30px; width: 100%; } #popup_form textarea{width:100%}
Понятное дело, что подобным образом можно ни только создавать popup формы с обратной связью, но и форму с обратным звонком, плавающую кнопку на всех страницах сайтах, но это уже другая история.