BBPress free antispam and no capcha
/* Превью
Not a penny for calm
*/
Максимально быстрый и простой способ убрать спам с форума BBPress для вордпеса.
WTF
Меняем название полей email и name в коде местами, тогда реальные пользователи не заметят подвоха, а боты будут вводить в поле name почту, тут то мы и будем отлавливать есть ли в поле name символ @ или нет, если есть значит бот
Настройка вёрстки
Заходим в форму
#/bbpress/templates/default/bbpress/form-anonymous.php
#Меняем названия полей name и email местами
<p>
<label for="bbp_anonymous_author"><?php esc_html_e( 'Mail (will not be published) (required):', 'bbpress' ); ?></label><br />
<input type="text" id="bbp_anonymous_author" value="<?php bbp_author_email(); ?>" size="40" maxlength="100" name="bbp_anonymous_name" />
</p>
Настройка логики
#/bbpress/includes/common/functions.php
# Ищем функцию отвечающую за обработку введённых полей bbp_filter_anonymous_post_data, и добавляем в начале код
// Antispam || TrywaR
// Поля email и name на сайте переименованы, если в name есть @ значит заполнял бот
if ( ! empty( $_POST['bbp_anonymous_email'] ) )
if (strripos($_POST['bbp_anonymous_email'], '@') === false) {
// Заполнял человек, меняем значения обратно чтобы работало как надо
$sEmail = $_POST['bbp_anonymous_name'];
$sName = $_POST['bbp_anonymous_email'];
$_POST['bbp_anonymous_email'] = $sEmail;
$_POST['bbp_anonymous_name'] = $sName;
} else {
// В имени есть @, заполнял бот, пишем что ошибка в @, а то вдруг это человек всё таки в имени пишет @
bbp_add_error( 'bbp_anonymous_name', __( 'Error: Invalid author name. Not use "@".', 'bbpress' ) );
}
Готово
Посолить по перчить по вкусу
Минусы такого подхода, при обнове BBPress все слетит к херам, чтобы восстановить и есть эта заметка
Комментарии ()
Написать комментарий