Создание плагина для WordPress на примере антиспам плагина

20 июня 2014 | Автор: | Категория: Плагины wordpress

На прошлой неделе начал понемногу изучать документацию по написанию WordPress плагинов. Чтобы закрепить теорию попробовал сам написать небольшой плагин, который добавляет для формы комментариев дополнительное поле с вопросом для проверки на спам.
Custom Anti Spam Plugin
Плагин я назвал Custom Anti Spam. После его активации, в разделе «Настройки» админ панели WordPress появляется дополнительный раздел, в котором можно указать вопрос, который будет выводиться в форме комментариев и правильный ответ на него.

Custom Anti Spam Plugin Настройки
Таким образом, если кто-то напишет персональную спамилку под Ваш блог с указанием верного ответа на антиспам вопрос, можно просто зайти в админ панель и сменить вопрос.

Весь функционал плагина реализован в одном файле custom_anti_spam.php:


Custom Anti Spam Plugin Options

' . $question . '*

'; return $fields; } function comment_post($id) { global $user_ID; $answer = get_option('user_answer'); if ($user_ID) return $id; if ($_POST['youranswer'] != $answer) { wp_delete_comment($id); echo '
' . 'Wrong captcha!' . '
' . 'Go back' . '
'; exit; } } ?>

где:

Функция add_action() — регистрирует хук на действия (admin_menu и comment_post). Действие admin_menu используется для вызова функции добавления нового пункта меню в админ панель. Действие comment_post — срабатывает сразу после добавления комментария и передает его ID.

Функция add_filter() — регистрирует хук на фильтр comment_form_default_fields, позволяющий добавить или удалить поля для формы комментариев. В нашем случае поля будут добавляться.

Функция add_option() — добавляет в таблицу options базы данных опцию с заданным значением. Добавляем две опции: в первой будет храниться вопрос, во второй ответ.

Функция get_option() — считывает значения опций из базы данных.

Функция update_option() — обновляет значения опций в базе данных.

Функция add_options_page() — добавляет страницу и пункт в меню «Настройки» админ-панели WordPress.

Функция wp_delete_comment() — удаляет либо помещает в корзину комментарий с указанным ID. Нам нужно, чтобы комментарий удалялся, так как если в случае неправильного ответа на антиспам вопрос комментарий попадёт в корзину, то повторно этот же комментарий добавить не получится. Система воспримет его как дубликат. Чтобы отключить корзину нужно в файл wp-config.php добавить строку: define(‘EMPTY_TRASH_DAYS’, 0);

Скачать файл плагина Custom_Anti_Spam.zip

Если данная статья попадётся на глаза гуру wordpress, интересно бы было услышать критику в комментариях: какие уязвимости есть у данного плагина, что можно бы было оптимизировать и т.п.

Метки: 

Комментарии к "Создание плагина для WordPress на примере антиспам плагина"

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Enter your question:
Enter your answer: