Теперь забудьте о спам-комментариях в WordPress 😎

Скачать: Forget Spam Comment Plugin

Это бесплатный антиспамовый плагин, предназначенный исключительно для системы комментирования WordPress по умолчанию.

Как это работает

В качестве альтернативы для опытных пользователей ниже приведен ручной метод

Система комментирования WordPress по умолчанию имеет две основные проблемы.

  1. Привлечение спам-комментариев.
  2. Не отправка последующего письма автору комментария (обсудим через некоторое время).

Давайте поговорим о ее решениях.

Предотвращение спама в комментариях

Вместо того, чтобы напрямую разрешить любому сделать POST-запрос по адресу /wp-comments-post.php, мы можем добавить некоторую логику, чтобы предотвратить спам комментарии на 100%.

Шаг 1. Ограничение пути POST-запроса комментария по параметру запроса

Я собираюсь поделиться тремя способами, используйте один метод.

Apache

  • Yoast > Перейдите в Инструменты > Редактор файлов
  • RankMath > Перейдите в Общие настройки > Редактировать .htaccess
  • FTP/SSH > Проверьте /var/www/html
# If Query string doesn't matches return 404
<IfModule mod_rewrite.c>
	RewriteEngine On
        RewriteCond %{REQUEST_URI} .wp-comments-post\.php
        # You may change 45jpfAY9RcNeFP to something else
        RewriteCond %{QUERY_STRING} !^45jpfAY9RcNeFP
	RewriteRule (.*) - [R=404,L]
</IfModule>

Если вы используете LiteSpeed, он также поддерживает файл .htaccess. После внедрения вы должны перезагрузиться.

NGINX

location = /wp-comments-post.php {

 if ($query_string !~ "45jpfAY9RcNeFP") {
     return 404;
  }
}

Cloudflare

prevent spam comments
  • Вход в систему Приборная панель Cloudflare
  • Перейдите в раздел Брандмауэр > Правила брандмауэра
  • Создайте новое правило брандмауэра с приведенным ниже выражением
ПолеОператорЗначение
URIcontainswp-comments-post.phpИ
URL Query Stringdoes not equal45jpfAY9RcNeFP
  • Выберите действие: Блок

В конце вы увидите выражение

(http.request.uri contains "wp-comments-post.php" and http.request.uri.query ne "45jpfAY9RcNeFP")

Шаг 2. Исправьте URL POST-адрес комментария в событии Scroll

  • Добавьте следующую функцию, используя плагин Code Snippets или файл functions.php темы
  • Убедитесь, что используете правильный домен и ID формы.
function correct_comment_url_on_scroll() {
// Check if Comment is enabled
if(comments_open()) echo '<script>
let commentForm = document.querySelector("#commentform, #ast-commentform, #ht-commentform");

// Load new comment path on the scroll event
document.onscroll = function () {
    commentForm.action = "https://www.example.com/wp-comments-post.php?45jpfAY9RcNeFP";
};
</script>';
}
add_action('wp_footer', 'correct_comment_url_on_scroll', 99);

Также, если вы являетесь пользователем темы GeneratePress Premium, вы можете добавить вышеуказанную JS-часть непосредственно с помощью модуля Elements.

<script>
let commentForm = document.querySelector("#commentform");

commentForm.action = "https://www.example.com/wp-comments-post.php";
// Load new comment path on the scroll event
document.onscroll = function () {
    commentForm.action = "https://www.example.com/wp-comments-post.php?45jpfAY9RcNeFP";
};
</script>
  • Добавить новый крючок
  • Новое название крючка: Изменение URL-адреса комментария на лету
  • Крючок: WP Footer
  • Приоритет: 99
  • Местонахождение: Сообщения — Все сообщения
  • Опубликовать

Как проверить, работает ли он?

  • Generally WordPress return 405 response for GET request at /wp-comments-post.php
  • Но после вышеуказанной настройки вы должны увидеть Access Denied.
  • Кроме того, URL должен загружаться только при наличии специальной строки запроса 45jpfAY9RcNeFP, которую мы добавили для предотвращения спам-комментариев. Вы можете изменить эту строку запроса на что-то другое во всех вышеуказанных настройках.
  • В исходном коде обычно отображается путь wp-comments-post.php, но если вы проанализируете элемент после прокрутки, то заметите добавленную строку запроса.

Результат №1: Нет спама

no spam

Результат #2: Спамеры блокируются

log

Бонусный совет, как сделать систему комментариев по умолчанию еще лучше

  • По умолчанию система комментирования WordPress не отправляет автору комментария последующее письмо. Чтобы исправить эту проблему, вы можете использовать плагин Comment Reply Email Notification от Arno Welzel.

Если вам понравилась эта информация, пожалуйста, передайте ее своим друзьям. 🙏

Оставьте комментарий

20 комментариев к “Теперь забудьте о спам-комментариях в WordPress 😎”

  1. By the way, how do you know if legit users won’t get blocked? Before this, I’ve been using a CF firewall rules that will blocks or challenge anyone who visit wp-comments-post.php but actually by doing so, legit users also got blocked. How this one different? Is it because of the string «45jpfAY9RcNeFP» that will differentiate which request is from bot and which request is from legit users? If legit users, they should’ve the string, if it’s spam, they don’t have that string. Am I understand it correctly?

    Ответить
  2. Hi Gulshan.

    I just wanted to let you know that I’ve been using your plugin for a few weeks now and it is brilliant. Genuine comments still get through but all of the spam, and I mean ALL of it, is filtered out. Excellent job!

    Well done and thank you so much for sharing it for free so that hobby bloggers like me can make use of it.

    Ответить