X
Заказать услугу

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

Плагины и Шаблоны для Wordpress
  • 2019-03-18
  • 3551 просмотр

    2 комментарий

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

Доброго времени суток. 🙂
Каждый, у кого на 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
Проголосовало: 6, в среднем: 5 из 5
Читайте также
Опубликовано 2 комментария

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

Чтобы оставить комментарий - заполните поля ниже. Ваш e-mail не будет опубликован. Все поля обязательны

Нажмите, чтобы добавить код в комментарий. Далее добавьте свой код внутрь тегов <code> тут код </code>
Я ознакомлен(а) с политикой конфиденциальности и даю согласие на обработку персональных данных*

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.