WordPress. Защита формы комментария
31.05.2019
Теги: CMS • Hook • Web-разработка • WordPress • Комментарии • Плагин • Форма
Давайте создадим плагин, который изменит форму для добавления комментария к записи блога. Плагин будет удалять из формы поле «Сайт» и добавлять простую проверку на робота. Для проверки на робота мы просто добавим checkbox «Я не робот», который пользователь должен отметить.
Итак, создаем директорию tokmakov-captcha
, а внутри нее — файл tokmakov-captcha.php
:
<?php /* Plugin Name: Добавляет captcha для формы комментария Plugin URI: https://tokmakov.msk.ru Description: Добавляет проверку на робота для формы комментария и удаляет поле «Сайт» Version: 1.0 Author: Евгений Токмаков Author URI: https://tokmakov.msk.ru */
Удаляем поле «Сайт» и добавляем checkbox «Я не робот»:
add_filter('comment_form_default_fields', function($fields) { // удаляем из формы поле «Сайт» unset($fields['url']); // добавляем проверку на робота $fields['captcha'] = <<<CAPTHA <p class="comment-form-captcha"> <input id="captcha" name="captcha" type="checkbox" value="1" required="required" /> <label for="captcha">Я не робот <span class="required">*</span></label> </p> CAPTHA; return $fields; });
После отправки формы проверяем, что checkbox был отмечен:
add_filter('preprocess_comment', function($comment) { if (is_user_logged_in()) { return $comment; } if (!isset($_POST['captcha'])) { wp_die('Не отмечен checkbox «Я не робот»'); } return $comment; });
Фильтр preprocess_comment
Позволяет изменить данные комментария перед тем, как они будут очищены и добавлены в базу данных. Фильтр срабатывает в самом начале функции wp_new_comment()
, которая добавляет новый комментарий.
add_filter('preprocess_comment', function($comment) { die(print_r($comment)); });
Array ( [comment_post_ID] => 1883 [comment_author] => admin [comment_author_email] => admin@server.com [comment_author_url] => [comment_content] => Какой-то комментарий [comment_type] => [comment_parent] => 0 [user_ID] => 1 )
- WordPress. Обработка POST-запросов. Часть 1
- WordPress. Форма комментирования
- WordPress. Фильтр записей по произвольным полям. Часть 3 из 3
- WordPress. Фильтр записей по произвольным полям. Часть 2 из 3
- WordPress. Обработка POST-запросов. Часть 2
- WordPress. Защита страницы авторизации
- WordPress. Фильтр записей по произвольным полям. Часть 1 из 3
Поиск: CMS • Web-разработка • WordPress • Форма • Коииентарий • Comment • Hook • Плагин • Plugin