- Изучаем файлы шаблона WordPress
- Изучаем файлы шаблона WordPress
- Файл header.php
- Файл header.php — продолжение
- Файл header.php — окончание
- Изучаем файлы шаблона: index.php
- Продолжаем изучать index.php
- Файлы шаблона WordPress: sidebar.php
- Изучаем файлы шаблона: правый сайдбар
- Продолжаем изучать файлы шаблона WordPress
- Файлы шаблона WordPress: комментарии
- Как сделать новый сайдбар с поддержкой виджетов
- Файлы шаблона WordPress: окончание
- Серия статей — изучаем файлы шаблона — в одном PDF файле
- Варианты одиночной страницы single.php
- Как отлючить HTML теги в комментариях
- Как создать дочернюю тему
- WordPress для начинающих: ставим Логотип-картинку
Если вы хотите отключить использование HTML в комментариях, вставьте этот код в файл functions.php вашего шаблона:
// This will occur when the comment is posted
function plc_comment_post( $incoming_comment ) {// convert everything in a comment to display literally
$incoming_comment[‘comment_content’] = htmlspecialchars($incoming_comment[‘comment_content’]);// the one exception is single quotes, which cannot be #039; because WordPress marks it as spam
$incoming_comment[‘comment_content’] = str_replace( «‘», ‘'’, $incoming_comment[‘comment_content’] );return( $incoming_comment );
}// This will occur before a comment is displayed
function plc_comment_display( $comment_to_display ) {// Put the single quotes back in
$comment_to_display = str_replace( ‘'’, «‘», $comment_to_display );return $comment_to_display;
}add_filter( ‘preprocess_comment’, ‘plc_comment_post’, », 1);
add_filter( ‘comment_text’, ‘plc_comment_display’, », 1);
add_filter( ‘comment_text_rss’, ‘plc_comment_display’, », 1);
add_filter( ‘comment_excerpt’, ‘plc_comment_display’, », 1);
https://otvetykz.com — спроситьна любую тему — и вам ответят обязательно.
А у меня другая ситуация: сыпался спам, где либо поле url было заполнено+в тексте комментария ссылки, либо текст без ссылок, зато в url ссылка есть. Хотел именно блокировать его добавление.
Пробовал убирать поле url из шаблона темы comments.php. Так тогда url поле соответственно пустое, а текст остается (пусть и без ссылок, но все же не по теме).
Сделал так:
1) В comments.php оставил поле ссылки на сайт, но добавил аргументы autocomplete=»off» и style=»display:none»
2) В wp-comments-post.php прописал это после проверки на пустоту текста комментария:
[php]
if( preg_match(‘/(nofollow|url|link)/i’, $comment_content ) == true || 4 < strlen($comment_author_url))
wp_die( __('<strong>ERROR</strong>: СПАМ не пройдет!’) );
[/php]
Что мы получаем в итоге? обычным посетителям поле для ввода сайта не видно, соответственно они не заполняют его, его длина=0 и если в тексте комментария нет таких слов как nofollow, url или link — коммент проходит
А программы-автоспамеры по идее не видят обманку, заполняют поле с url, что приводит к выводу сообщения с ошибкой. Если они не заполняют его, но в тексте коммента есть ссылка — тоже самое выходит сообщение и комментарий не добавляется.
Вручную спамить тоже теперь нет смысла, ссылку же не пропихнуть никуда.
autocomplete=»off» прописал для того, чтобы не вышло так, что поле url заполнялось автоматически браузером и нормальный комментарий не проходил из-за этого.
Лично все проверил на WP 3.5.1 — работает без проблем. Как будет со спамом пока не знаю, нужно ждать, но уверен, что теперь он сократится существенно.
Может вдруг поможет этот способ, а то искал как сделать, чтобы комментарий блокировался, если в тексте есть ссылки — везде только преобразование его в обычный текст.
Интересное решение, не встречал
Уважаемый Администратор, прошу удалить мой предыдущий комментарий от 23.06.2013 в 17:40 «Забыл добавить, по умолчанию поле сайт не обязательно для….»
он ошибочный, т.к нужный код уже был мною приведен. Извиняюсь. Удалите пожалуйста тот коммент (23.06.2013 в 17:40) и этот заодно
Удалил)
Спасибо за полезную информацию, как раз в поисках решения аналогичной проблемы….