Количество внешних ссылок в комментариях - параметр модерации
Вопрос
Я только что запустил проблему, чтобы правильно использовать количество внешних (что не относится к относительным или абсолютным ссылкам на мой собственный блог) в моем блоге для Комментарий модерация Вариант подсчета.
Это помечено Держите комментарий в очереди, если он содержит [ваш номер здесь] или более ссылок. (Общая характеристика спама комментариев - большое количество гиперссылок.) На параметрах -> Обсуждение в задней части WordPress. Скриншот:
Я знаю, что в настоящее время это считается всеми ссылками inkl. Ссылки на блог и другие комментарии (сообщают здесь: #14681но я не могу представить, что уже нет плагина или взлома, который правильно исправляет счет только по внешним ссылкам.
Итак, мой вопрос: есть ли плагин / взломан, который делает WordPress правильно считать только внешние ссылки в комментариях для его параметров модерации?
Решение
Ха -ха, я действительно выяснил способ сделать это. Как плагин, это должно работать.
class JPB_CommentCounter {
var $count = 0;
function __construct(){
add_filter( 'pre_comment_content', array( $this, 'content' ), 100 );
add_filter( 'comment_max_links_url', array( $this, 'counter' ) );
}
function JPB_CommentCounter(){
$this->__construct();
}
function counter( $num, $url ){
if($this->count < 1)
return $num;
elseif( $this->count > $num )
return 0;
else
return $num - $this->count;
}
function content( $content ){
$homeurl = preg_quote( home_url() );
if( preg_match_all( '@<a [^>]*href=[\'|"](/|'.$homeurl.')@i', $content, $matches ) )
$this->count = count($matches[0]);
return $content;
}
}
$JPBCC = new JPB_CommentCounter();
Я должен добавить, что я никоим образом не проверил это. Но это должно теоретически работать.
Другие советы
Теперь я написал Полный плагин Для этого, который предлагает базовый интерфейс подсчета ссылок для добавления комментариев с WordPress 3.0. В дополнение к тому, что предложил Джон, я внес некоторые изменения / приложения на основе отслеживания крючков, запускаемых путем добавления комментария, так как я хотел выполнить его только тогда, когда фактически добавлен новый комментарий.
Поэтому я выбрал comment_text
вместо pre_comment_content
крюк. Остальные в основном одинаковы, но некоторые проверки здравомыслия были добавлены, чтобы они выполняли только один раз и при добавлении только нового комментария. Дополнительная (но в настоящее время невыполненная) проверка была бы, чтобы включить его только после comment_max_links
вариант был прочитал get_option()
( pre_option_comment_max_links
-Сук), но на данный момент это прошло тестирование, я до сих пор не сделал этого.
А SourceCode можно просмотреть онлайн в Trac.
Я дам ответ Джону, даже я не выбрал его предложение, так как он сначала опубликовал такой же принцип.