Если честно, давно уже не работал с Wordpress, но недавно объявился старый клиент и попросил добавить на его сайт на Wordpress простенькую форму заказа товара. Товары были представлены на отдельных статических страницах, ни о каком интернет-магазине речи не шло. Суть такая - в конце каждой страницы нужно создать форму, в которой покупатель может оформить заказ, указав количество товара.
Гугл подсказал, что теоретически справиться с задачей сможет плагин Contact Form 7, представляющий собой конструктор форм обратной связи с отправкой писем на указанный адрес, но вот беда - среди элементов страницы формы не предусмотрено тегов для отправки заголовка страницы или хотя бы ее URL. Но выход нашелся...
1. Создаем форму обратной связи с такими полями, какие нам нужны. Для верстки формы используем обычный HTML+CSS, спецтеги заключаются в квадратные скобки. Все это делается во вкладке "Шаблон формы" на странице настройки плагина Contact Form 7.
Форма заказа при этом выглядит таким образом (при заданном стиле класса order):
Теперь нам нужно обеспечить передачу TITLE и URL страницы в письме. См п.2.
2. Переходим в раздел "Письмо" и формируем шаблон письма. Чтобы передать служебную информацию, можно использовать следующие служебные теги:
- [_remote_ip] IP-адрес отправителя.
- [_user_agent] User Agent отправителя.
- [_url] URL-адрес контактной формы.
- [_date] Дата отправления.
- [_time] Время отправления.
- [_post_id] ID поста (записи) контактной формы.
- [_post_name] Имя поста (в схеме протокола HTTP ).
- [_post_title] Заголовок записи с контактной формой.
- [_post_url] Ссылка на страницу отправки.
- [_post_author] Имя автора публикации.
- [_post_author_email] Адрес почты автора публикации.
Если вставить в шаблон письма теги [_post_tltle] и [_post_url], в нем будут указаны название страницы и ее адрес. Если название страницы совпадает с названием товара, то проблема передачи наименования товара адмнистратору сайта будет решена!
Вот пример шаблона письма, в котором передается название и URL страницы, с которой оформлялся заказ:
Пользователь оформляет заказ, указывая количество товара и свои контактные данные. После того, как нажата кнопка "Оформить заказ", к вам на почту приходит подобное сообщение:
Понимаю, что это, конечно, не так изящно, как в "крутом" интернет-магазине, но у вас есть возможность связаться с клиентом и обсудить подробности заявки. Моему клиенту, собственно, именно это и требовалось.
Маленькая хитрость
Чтобы вставить код формы в произвольное место шаблона, в PHP-код можно добавить следующую строку:
<?php echo do_shortcode('[contact-form-7 id="1234" title="Contact form 1"]' ); ?>
То, что выделено красным цветом берется из настройки формы. Этот прием удобен для вставки кода в каждую страницу, чтобы не добавлять шорт-код вручную в редакторе к описанию каждого товара.