Как создать контактную форму в WordPress. Эпизод 2

Начало статьи смотрите по ссылке Как создать контактную форму в WordPress. Эпизод 1

Метод send_email() отправляет письмо на адрес администратора сайта.

public function send_email($name, $email, $subject, $message) {<div style="float:right;width:350px;margin:0 0 10px 15px;">
<div id="yandex_rtb_R-A-187781-2"></div>
</div>

        // Убеждаемся в том, что массив ($form_errors) не содержит ошибок
        if ( count($this-&gt;form_errors) &lt; 1 ) {

            // чистим поля формы
            $name = sanitize_text_field($name);
            $email = sanitize_email($email);
            $subject = sanitize_text_field($subject);
            $message = esc_textarea($message);

            // получаем email адрес администратора сайта
            $to = get_option('admin_email');

            $headers = &quot;From: $name &lt;$email&gt;&quot; . &quot;\r\n&quot;;

            // Если email успешно отправлен в обработку, тогда выводим сообщение о том, что все выполнено успешно
            if ( wp_mail($to, $subject, $message, $headers) )
                echo '&lt;div style=&quot;background: #3b5998; color:#fff; padding:2px;margin:2px&quot;&gt;';
                echo 'Спасибо за обращение, мы скоро ответим Вам.';
                echo '&lt;/div&gt;';
        }
    }

Обратите внимание, что почта будет отправлена администратору блога или на email адрес владельца, полученного программа с помощью функции WordPress get_option. Метод send_email() проверяет, что перед отправкой email не было ошибок, прежде сгенерированных этой формой.

Следующим будет process_functions. Этот метод вызывает и обрабатывает методы form, validate_form и send_email.

public function process_functions() {
        if ( isset($_POST['form-submitted']) ) {

            // вызываем validate_form() для проверки значений формы
            $this->validate_form($_POST['your-name'], $_POST['your-email'], $_POST['your-subject'], $_POST['your-message']);

            // выводим ошибки формы, если таковые имеются
            if (is_array($this->form_errors)) {
                foreach ($this->form_errors as $error) {
                    echo '<div>';
                    echo '<strong>ОШИБКА</strong>:';
                    echo $error . '<br/>';
                    echo '</div>';
                }
            }
        }

        $this->send_email( $_POST['your-name'], $_POST['your-email'], $_POST['your-subject'], $_POST['your-message'] );

        self::form();
    }

Сначала функция проверяет, была ли отправлена контактная форма. Если это утверждение верно, она вызывает validate_form для проверки значений формы и выводит сообщение, сгенерированное формой. send_email также вызывается для отправки письма администратору.

И, наконец, form выводит контакнтую форму на HTML.

Ранее мы добавляли add_shortcode в метод __construct для регистрации шорткода плагина в WordPress.

add_shortcode('contact_form_dm', array($this, 'shortcode'));

Второй аргумент, передаваемый функции — это вызов шорткода shortcode(),, к которому идет обращение при использовании шорткода.

public function shortcode() {
        ob_start();
        $this->process_functions();
        return ob_get_clean();
    }

}

Теперь мы создаем класс для отправки форму «в работу».

new Designmodo_contact_form;

Как использовать плагин контактной формы

Для того, чтобы добавить контактную форму в запись или на страницу WordPress необходимо использовать шорткод [contact_form_dm]. Если же нужно вставить форму в шаблон темы, используйте код ниже:

<?php echo do_shortcode('[contact_form_dm]'); ?>

Ниже скриншот, отображающий успешную отправку сообщения с помощью контактной формы.

contact-form-message-sent[1]

Заключение

Большинство контактных форм в репозитории WordPress довольно тяжелы и раздуты. Если вы хотели создать свою собственную, эта статья показала вам, как создать простую контактную форму. Вот ссылка на наш итоговый плагин контактной формы, если вы сразу захотите им воспользоваться, не собирая по кусочкам из статьи.

По всем вопросам и отзывам просьба писать в комментарии ниже.

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

VN:F [1.9.22_1171]
Rating: 5.0/5 (3 votes cast)

Об авторе ADv

Занимаюсь разработкой сайтов и магазинов на WordPress. Оказываю платные помощь и консультации. Skype: advokat_b
  • LdOmenov

    Большое спасибо за статью!
    Если развить тему формы для сайта — можете ли вы в ваших материал рассмотреть создание формы обратной связи для уже зарегистрированных пользователей в WordPress.
    Если на ajax (без перезагрузки страницы) — то это будет вообще шикарно!

Scroll To Top