• Доброго времени суток.
    Да, плагин Акисмет всем хорош, помечает спам сообщения на ура. Но этих спам сообщений копится огромное количество, в 95% которых присутствует HTML ссылка(и). И этот список надо просматривать, ведь в него могут попасть и обычные сообщения от реальных комментаторов.

    Подскажите, пожалуйста, код, который проверяет в отправляемом сообщении наличие html тега href= и в случае его наличия выводит сообщение (wp_die), наподобие: HTML тег ссылки в комментариях запрещён. Вернитесь и отредактируйте сообщение.

    Активно гуглил, но решения не нашёл, хотя это пару строк кода максимум…

    • Тема изменена 6 лет, 4 месяца назад пользователем rediioo.
Просмотр 15 ответов — с 1 по 15 (всего 15)
  • И этот список надо просматривать, ведь в него могут попасть и обычные сообщения от реальных комментаторов.

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

    В самом же ВП есть настройка при наличии скольких ссылок отправлять на модерацию. Дефолтно — 2.

    HTML в комментариях запрещён

    ИМХО Вы идете не тем путём.

    SeVlad
    Спасибо что откликнулись. Да, я знаю, что акисмет проверяет по множеству параметров. однако же среди сотни спам комментариев, что стоят в очереди выцеплять короткие и ошибочно попавшие в этот список от реальных пользователей хлопотно.

    Я считаю, что проще отсекать 95% мусора вовсе, ведь вероятность отправки от реального пользователя с html тегом минимальна, но даже если это и произойдёт, то он увидит сообщение и исправит свой коммент.

    Вопрос остаётся в силе.

    выцеплять короткие и ошибочно попавшие в этот список от реальных пользователей хлопотно.

    Они у Вас реально есть или Вы думаете что будут?

    Я считаю, что проще отсекать 95% мусора вовсе, ведь вероятность отправки от реального пользователя с html тегом минимальна, но даже если это и произойдёт, то он увидит сообщение и исправит свой коммент.

    Правильно думаете, но Вы хотите отсекать ПОСЛЕ отправки (при этом поменяв работу парсера), в то время как легче отсечь ДО этого. Проще не допустить отправку поста ботами, чем анализировать что они написали.

    Но дело Ваше.. Я просто хотел пояснить.

    SeVlad

    Они у Вас реально есть или Вы думаете что будут?

    Реально есть, я просто захожу не часто.

    Правильно думаете, но Вы хотите отсекать ПОСЛЕ отправки

    В момент отправки, не после. Логику я описал в первом посте.

    Надеюсь на решение в коде.

    Наверное надо было лучше вопрос задавать в будний день, а то оно уже затерялось среди новых постов и гуру WordpPress его не увидели 🙁

    потратьте 5 минут на внедрение защиты:
    https://www.wphook.ru/rasnoe/no-auto-spam.html

    спам резко сократится до пары сообщений в месяц.

    Наверное надо было лучше вопрос задавать в будний день, а то оно уже затерялось среди новых постов и гуру WordpPress его не увидели

    Скорее всего никому не интересно решать простую, стандартную задачу, как зашита от спама таким ммм… корявым способом.

    Ида, вставленные простым текстом ссылки в html-код преобразует ВП.

    Flector
    Спасибо за наводку, но я использую плагин Акисмет, а также плагин подписки на комментарии. Если я изменю форму комментариев приведённым скриптом, то мне придётся искать и менять их ещё и с криптах, а с моими поверхностными знаниями в программировании это тяжело.

    SeVlad
    Это хороший способ, он отсекает огромное количество спама, вот бы ещё мне помогли сие реализовать в коде, было бы совсем хорошо.

    Это хороший способ, он отсекает огромное количество спама

    Это костыль может и отсечёт часть спама (он не помешает спамерам публиковать неактивные ссылки), но и создаст проблем нормальным пользователям и для его реализации нужно затратить ресурсы на переделку стандартного функционала. В то время как для борьбы со спамом есть более простые и надёжные способы.
    Поэтому я сильно сомневаюсь что кому-то будет интересно заниматься такими.. извините, но по моему мнению — глупостями. Ну разве что за деньги кто-то захочет (только не я 😉 )

    Модератор Юрій

    (@yube)

    код, который проверяет в отправляемом сообщении наличие html тега href= и в случае его наличия выводит сообщение (wp_die)

    Попробуйте так

    add_filter('preprocess_comment', 'die_on_href');
    function die_on_href($commentdata) {
    	if (preg_match("/href=/", $commentdata['comment_content'])) {
    		wp_die('HTML тег ссылки в комментариях запрещён. Вернитесь и отредактируйте сообщение.');
    	}
    	return $commentdata;
    }
    

    Юрий
    Божественно! Просто божественно. Отлично работает код 🙂 Безмерно вам благодарен.

    Действительно специалист в своём деле.

    UPD: А можно ли ещё внести исключение для администраторов, чтобы отправляя ответ из админки, фильтр не срабатывал?

    • Ответ изменён 6 лет, 4 месяца назад пользователем rediioo.

    Вот так вот будет правильно?

    add_filter('preprocess_comment', 'die_on_href');
    function die_on_href($commentdata) {
    	if(!is_admin()) {
    	if (preg_match("/href=/", $commentdata['comment_content'])) {
    		wp_die('HTML тег ссылки в комментариях запрещён. Вернитесь и отредактируйте сообщение.');
    	} }
    	return $commentdata;
    }
    Модератор Юрій

    (@yube)

    Работает? Значит, правильно! 🙂

    Можно еще проверять так

    if ( !is_admin() ) add_filter('preprocess_comment', 'die_on_href');
    

    или так

    if (!is_admin() and preg_match(...
    

    is_admin

    https://codex.wordpress.org/Function_Reference/is_admin
    По русски: проверяет находится ли пользователь в админ-панели сайта (консоль или любая другая страница админки).
    Нужно проверять возможности юзера: user_can.

    Юрий
    Безмерно благодарствую 🙂

    SeVlad
    Мне достаточно is admin, т.к. я из админки отвечаю всегда.

    Спасибо всем за помощь 🙂 Вопрос решён.

Просмотр 15 ответов — с 1 по 15 (всего 15)
  • Тема «Подскажите код, выводящий сообщение, если пытаются отправить коментарий с html» закрыта для новых ответов.