Фильтрация имени админа при комментировании гостями в Wordpress
У меня на многих WP-сайтах гости могут комментировать, для этого им достаточно написать любое имя, любой визуально валидный е-мейл и сообщение больше 1 символа. Некоторые
дибилы
посетители пытаются таким образом писать что-то от имени администрации, выдавая себя за меня :) Пост о том, как с этим бороться.
Нужно сделать две вещи:
-
визуально изменить вид имени админа
-
фильтровать похожие по названию/описанию имена
Первый пункт достаточно понятен - можно увеличить на пару пунктов размер шрифта для имени админа, покрасить его в какой-нибудь отличный от других цвет, ну и жирным можно сделать. Как это делается - идем в папку с темой, видим файл comments.php, открываем, ищем функцию “comment_author_link()” - она отвечает за вывод имени и, как правило, обрамлена html-тэгом “cite”. Нам надо добавить условие, при котором, если комментарий от админа, к этому тэгу дописывался бы стиль. Я сделал вот так, но по хорошему надо бы завести стиль в какой-нибудь style.css:
<cite style="color:<?php if ($comment->user_id==1) echo 'red;font-weight:bold'; else echo 'grey'; ?>;"><?php comment_author_link()?></cite>
Тут только надо поменять user_id, если вы вдруг админите от пользователя, который был заведен не первым.
Второй пункт - регулярками отсекать слова “админ”, “модератор”, и их производные. Для этого идем в корень своего WP, открываем wp-comments-post.php, там вначале идут всевозможные проверки введенных данных пользователем при комментировании. Нам надо где-нибудь после проверки e-mail’а - строка:
wp_die( __('Ошибка: Пожалуйста, введите e-mail правильно') );
вписать вот такой код:
$pattern = "#[aAаАоОoO0][dDдДb][мМmM][иИiIl][nNнНm]#isu";
$pattern2 = "#[мМmM][оОoO0][дДdD][еЕeE][рРpP]#isu";
if ( preg_match($pattern, $_POST['author']) || preg_match($pattern2, $_POST['author'])) wp_die( __('Ошибка: нельзя употреблять в имени слова админ или модератор!') );
Вроде все нагляно, первый паттерн спасает от слов “админ”, второй - от “модератор”. Если находятся извращенцы, которые обходят их - дополняете эти паттерны. Но, как правило, после нескольких неудачных попыток народ к теме подражания остывает, и настоящему админу становится более спокойней :)
PS: мне надо прорекламить свой говносайт с партнеркой, так что далее будет идти спец.текст :) Попробуйте видеочат онлайн знакомств, там можно найти новых интресных друзей :)
PPS: да, если ваш сайт в кодировке win1251, надо убрать на концах паттернов модификатор “u” - он юзается только для utf-8
Прикольная фишка. Правда я еще не встречал у себя таких комментаторов, но на всякий случай сохраню в ворд эту статейку - а вдруг пригоодится :-)