Баг: не работает MailHide в WP-reCAPTCHA
reCAPTCHA – отличная вещь. Помимо защиты регистрации и комментариев (а также доброго дела в виде участия пользователя в распознавании книг), reCAPTCHA предоставляет возможность скрывать e-mail адреса. Вот только функция MailHide (reCAPTCHA 2.9.6) с лету не заработала на WordPress 2.8 – адреса электронной почты отображались в открытом виде, как и прежде. Пришлось покопаться в исходном коде.
В файле wp-recaptcha.php есть функция mh_insert_email – это и есть основной фильтр контента, ищем в функции условие:
if (($needed_capability && current_user_can($needed_capability)) || !$recaptcha_opt['re_comments']) {
Переменная re_comments равна 1 если reCAPTCHA включена для комментариев. Логика авторов мне не очень понятна, я, например, не собираюсь использовать reCAPTCHA для защиты комментариев, а вот защитить почтовые адреса хотел бы. Меняем условие на:
if ($needed_capability && current_user_can($needed_capability)) {
Тоже самое проделываем в функции mh_replace_hyperlink:
if (($needed_capability && current_user_can($needed_capability)) || !$recaptcha_opt['re_comments']) {
Меняем на:
if ($needed_capability && current_user_can($needed_capability)) {
Помимо этого, плагин неправильно обрабатывает суффикс адреса, т.е. если было:
user At mail.ru
Будет что-то вроде:
u... At u
В функции mh_replace ищем строчку:
$html = htmlentities($emailparts[0], ENT_QUOTES) . "<a href='" . htmlentities($url, ENT_QUOTES) ."' onclick=\"window.open('" . htmlentities($url, ENT_QUOTES) . "', '', 'toolbar=0, scrollbars=0, location=0, statusbar=0, menubar=0, resizable=0, width=500, height=300'); return false;\" title=\"" . $recaptcha_opt['mh_replace_title'] . "\">...</a>@" . htmlentities($emailparts[0], ENT_QUOTES);
Меняем $emailparts[0] на $emailparts[1].
Скрывает адреса вот так (для незарегистрированных пользователей):
u...@u
Вот так – читайте письма, а не спам
Распечатать
Другие записи:
- Сброс пароля WordPress в MySQL
- Настраиваем систему индексации и поиска Sphinx для LiveStreet
- Preview комментариев и отправка по Ctrl+Enter в WordPress
- Баг: двойные ссылки навигации по страницам в WordPress 2.8
- MySQL: замена значений в поле
- Конвертируем IPB 2.3.x в phpBB 3.0.5
- Баг: не работает Search Unleashed 1.0.2
- GPRS/EDGE доступ в интернет через bluetooth в Ubuntu 8.10
- С www и без. Сохранение ссылочной популярности сайта.
- Запуск Java и Apache Felix в chroot jail окружении в Debian Lenny

