X
  • Дизайн та розробка сайту
  • Дизайн і створення сайтів. Розробка тем для WordPress. Створення Landing Page.
  • office@gnatkovsky.com.ua
  • @vgnat
  • Написати мені
Замовити послугу

Ставим Checkbox (флажок) перед отправкой комментариев WordPress

Приклад
  • 2024-12-03
  • 6810 переглядів

  • Дизайн та розробка сайту

Доброго времени суток. 🙂
Каждый, у кого на WordPress открыты комментарии, сталкивается с проблемой спама. К сожалению, комментарии не всегда оставляют те, кто интересуется Вашим сайтом в особенности его материалом. Часто открытой формой комментариев пользуются спамеры и оставляют под записями ссылки на свои сайты или на сайты, которые обратились к ним за услугой по раскрутке.
Иногда бывает что такой комментарий оставляют живые люди, тут увы ничем не помочь, разве что стандартный aksiment от WordPress. Когда комментарии со спамом оставляют роботы, это хуже всего. Комментарии оставляются десятками. Удалять такие пачки вручную очень тяжело. Есть один маленький, но очень интересный способ.
Дело в том что роботы - это программа, в которую внесли название полей по умолчанию в WordPress и они автоматом их заполняют. Можно конечно добавить какой-нибудь плагин, который добавить новое поле, но если плагин известный, то зачастую у ботов прописаны поля и к ним, так что использование сторонних плагинов, особо ничего не даст.
Но если Вы добавите, хоть одно обязательное поле, без которого комментарий не будет отправлен, то спам-бот не сможет его заполнить и оставить комментарий со спамом.
Способ который я Вам предлагаю, очень прост и его суть заключается в том, чтобы добавить обычный чекбокс (Checkbox),флажок, который нужно отметить чтобы иметь возможность оставить комментарий.
готовый вариант выглядит примерно так:
Пример использования чекбокса
или можете посмотреть внизу на моей форме отправки.
Чтобы вывести такой чекбокс у себя в форме отправки комментариев, Вам нужно сделать 2 шага.

1. Подключить функцию.

Для этого находим внутри Вашей темы файл functions.php и добавляем в него следующую функцию.

Чекбокс
//Чек бокс антиспам
add_action('comment_form', 'flagok_antispam_filtra');
add_action('comment_post', 'proverka_na_flagka');
function flagok_antispam_filtra($id) {
  if (!is_user_logged_in()) :
    print '<div class="antispam"><input style="width:auto;margin:5px;" type="checkbox" name="bad_post" value="1" />Это не спам *</div>';
  endif;
}
function proverka_na_flagka($id) {
  if (!is_user_logged_in()) :
    if (!$_POST['bad_post']) :
      $updated_status = 'trash';
      wp_set_comment_status($id, $updated_status);
      wp_die('Вы не подтвердили, что Вы не Спамер! Вернитесь назад и пройдите антиспам контроль.'); /* Покажем простому спам-боту, что он спамер. */
    endif;
  endif;
}

В 4 строке задается условие, что чекбокс выводится для тех кто не авторизованный. Если же он не авторизован, то выводится в чекбокс. Это видно в строке 6. Если хотите можете поменять текст возле чекбокса. Далее идет проверка нажал ли чекбокс пользователь перед тем как нажал кнопку - Отправить.
Если пользователь не сделал этого, то ему выводится сообщение из строки 14. Если он не вернулся и не подтвердил, то сообщение отправляется в корзину.

2. Добавляем стили.

Добавим простенькие стили, чтобы текст отображался корректно. По желанию можете стилизовать и сам чекбокс.

.antispam{font-size:12px;color:#f30;font-weight:bold;}

У чекбокса есть name и это bad_post, так же он указан в 11 строке, если Вы вдруг захотите его сменить или какой-то бот приспособится к нему, просто меняйте на тот что Вам надо.
Как я и писал выше, данный способ не идеален, но тем не менее рабочий. Результат виден сразу, спам-боты отпадают, остаются только живые посетители.
Надеюсь этот способ Вам поможет и избавит от головной боли.
На этом все, спасибо за внимание. 🙂

Якщо Вам була корисна моя праця, можете фінансово підтримати сайт або відключити блокувальник реклами, що займе 2 хвилини :)

Хочу підтримати фінансово Хочу відключити блокувальник

Оцініть статтю
  1. 5
  2. 4
  3. 3
  4. 2
  5. 1
Проголосовало: 7, в среднем: 4.4 из 5
Читайте також

Deprecated: Функція WP_Query викликана з аргументом, який вважається застарілим з версії 3.1.0! Вираз caller_get_posts застарілий. Використовуйте ignore_sticky_posts. in /var/www/vhosts/gnatkovsky.com.ua/gnatkovsky.com.ua/public/wp-includes/functions.php on line 6078