Как отключить html теги в комментариях и убрать стандартную надпись под формой комментирования

Здравствуй, уважаемый посетитель!

Многие пользователи WordPress хотят отключить html в комментариях и убрать строчку после формы комментирования: «Можно использовать следующие HTML-теги и атрибуты: <a href=»» title=»»> <abbr title=»»> <acronym title=»»> <b><blockquote cite=»»> <cite><del datetime=»»> <em> <i> <q cite=»»> <strike> <strong>». Или просто заменить ее на свой текст. Сегодня я расскажу, как это можно сделать.

Отключаем html теги в комментариях.

Чтобы отключить саму возможность комментирования с возможностями HTML нам нужно добавить в файл functions.php следующий код:

//отключаем html в комментариях начало
function plc_comment_post( $incoming_comment ) { $incoming_comment['comment_content'] = htmlspecialchars($incoming_comment['comment_content']); $incoming_comment['comment_content'] = str_replace( "'", ''', $incoming_comment['comment_content'] ); return( $incoming_comment ); }

function plc_comment_display( $comment_to_display ) { $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);

//отключаем html в комментариях конец

Теперь комментаторы не смогут использовать html теги и атрибуты. Но по-прежнему остается надпись под формой ввода. Она гласит, что пользователь все еще может использовать html теги и атрибуты.

Убираем надпись под формой комментирования.

Для этого нам нужно открыть comment-template.php который лежит в domen.ru/wp-includes/
Найти в нем строчку <?php echo $args[‘comment_notes_after’]; ?> и удалить. В таком случае вы полностью удалите какое – либо сообщение после поля ввода комментария.

А если необходимо написать свой текст после формы комментария, то эту строчку удалять не надо, а нужно всего лишь в этом же файле найти строчку, где есть <p class=»form-allowed-tags»>(в моем случае номер строки был 1537, может и у вас будет такой же). Там видим функцию sprintf().
Как раз она и выводит весь наш текст с тегами.
Внимание! Теги она выводит отдельно.

Давайте разберем. Вот вся строчка:

<p class=»form-allowed-tags»>’ . sprintf( __( ‘You may use these <abbr title=»HyperText Markup Language»>HTML</abbr> tags and attributes: %s’ ), ‘ <code>’ . allowed_tags() . ‘</code>’ ) . ‘</p>

Функция sprintf выводит надпись, %s выводит функцию . allowed_tags() . , allowed_tags() выводит разрешенные теги, а ‘ <code>’ и ‘</code>’ показывают, что это именно HTML вариант разрешенных тегов.

Следовательно, если мы хотим изменить ТОЛЬКО надпись, а теги оставить, то меняем You may use these <abbr title="HyperText Markup Language">HTML</abbr> tags and attributes: , а %s оставляем.
А если хотим, что бы тегов не было, а была только надпись, то удаляем %s.

Вот как эта строчка выглядит у меня:
sprintf( __( ‘Вы <strong>НЕ</strong> можете использовать <abbr title=»HyperText Markup Language»>HTML</abbr> теги и атрибуты.’ ), ‘ <code>’ . allowed_tags() . ‘</code>’ )

Что бы написать русскими буквами и на сайте все отображалось нормально, перекодируйте файл comment-template.php в UTF-8 (по умолчанию он в ANSI)
Ни в коем случае не удаляйте ,' &lt;code&gt;' . allowed_tags() . '&lt;/code&gt;' ) . '&lt;/p&gt;', — у меня перестал работать сайт из-за этого. Хотя может и что-то лишнее удалил, но разбираться уже не хочется.

На этом всё, с вами был Atamovich.

 

  • зачетно что сделал. ато до этого стоял.
    а вопрос. а какая разница в хтмл есть или нет он в комментах??

  • могут, например, поставить ссылку в пробеле. или много ссылок. Тут все зависит от фантазии спамеров)

  • А весь код в теги ноиндекс и нофолов закоментить это что???

  • Saxx

    Отличная информация, подробно и поэтому понятно! Два дня сидел пока сам допер… Делаю первый сайт, учить некому 🙂 Если можно, нужна еще информация о том как убрать слово wordpress из url'а. Например сейчас адреса страниц у меня выглядят так: http:// мой_сайт/wordpress/about.html
    А как сделать чтобы было http:// мой_сайт/about.html ?
    Инфу нашел про манипуляции с файлом .htaccess, а у меня их два. Один на сервере в папке httpdocs, другой в httpdocs/wordpress/
    Какой из них править согласно хелпу в админке?

  • Saxx

    Что-то ссылки искажены 🙁

  • Там ничего в .htaccess править не нужно 😉
    Вид ссылок можно редактировать так: заходим в "Консоль", далее в "Параметры" —> "Постоянные ссылки" — там выбираем "произвольно" и пишем вот что: /%postname%/ (либо /%postname%.html) это зависит от ваших предпочтений уже.
    Если оставите слеш в конце, то будет как у меня, если допишите .html то будет мой_сайт/название статьи.html
    Очень советую, чтобы название статьи это было на латинице, а не на русском. Для этого хорошо использовать плагин "RusToLat" — мне помогает.

  • Были искажены, так как плагин "RC Link Redirector" был настроен по старому у меня. До того, как я отключил html в комментариях, он обращал все ссылки в такую "белеберду": atamovich.ru/24f523/XUwWFV8bS+C….
    Для избежания лишних прямых ссылок. Сейчас это не актуально уже.

  • Saxx

    У меня в постоянных ссылка прописано /%post_id%-%postname%/
    Почему так — уже не вспомню, но теперь когда меняю то 404!. А наполнение сайта на 70-80% выполнено, как быть-то?

  • сайт на локальном сервере? или в интернете?
    где расположен сам движок?
    есть подозрение, что вордпресс у вас установлен не в корневой папке, а в каталоге, поэтому и дописывается так.
    404 возникает вообще при загрузке сайта или со старых ссылок?
    по какой инструкции разбирались с .htaccess?

  • Saxx

    Сайт в интернете, а WordPress действительно установлен в папку wordpress. 404 возникает при загрузке старых страниц, меню сайта осталось как и раньше. Инфу нашел тут [ссылка]

  • Ну если я правильно понял, сайт Изначально был установлен в каталог.
    Тогда пунктов гораздо меньше получается:
    1)Перейдите в панель Настройки.
    2)В поле Адрес WordPress (URL): измените адрес на тот где будут размещены файлы WordPress. Например: http:// site.com/wordpress
    3)В поле Адрес блога (URL): измените адрес на URL корневого каталога. Например: http:// site.com
    4)Нажмите Обновить настройки.
    5)Скопируйте файлы index.php и .htaccess из каталога с WordPress в корневой каталог вашего сайта (Адрес блога)
    6)Откройте файл index.php из корневого каталога в текстовом редакторе
    7)Внесите следующие изменения и сохраните файл. Измените строку, в которой написано:
    require('./wp-blog-header.php');
    на следующую, используя адрес каталога где размещен WordPress:
    require('./wordpress/wp-blog-header.php');
    8)Войдите в новое место. Это может быть http:// site.com/wordpress/wp-admin/
    9)Если вы хотите настроить Постоянные ссылки, перейдите в Постоянные ссылки и обновите шаблон Постоянных ссылок. WordPress автоматически обновит ваш файл .htaccess если он имеет соответствующий файл. Если WordPress не сможет записать в ваш файл .htaccess, то он покажет вам записанное заново правило, чтобы вы сами вручную скопировали его в ваш файл .htaccess (в том же каталоге, где находится основной файл index.php.)

    с 9м пунктом просто нужно чуть разобраться. Выставьте права на .htaccess перед всеми манипуляциями 777, а потом верните 644, после того как WordPress сохранит туда все настройки.
    Если меню вы выводите виджетом, а не как "текст", то там все обновится.
    Вот и все, должно получиться!

  • Saxx

    Адрес WordPress (URL) такой: http:// мой_сайт/wordpress, Адрес блога (URL) такой же. Непонятно: 5)Скопируйте файлы index.php и .htaccess из каталога с WordPress в корневой каталог вашего сайта (Адрес блога) — тут непонятно. Из директории /httpdocs/wordpress копирую index.php и .htaccess куда? Что является корневым каталогом? Какое название у него?

  • Вы чуточку не поняли.
    Адрес WordPress (URL) это адрес именно системы WordPress, которая у вас лежит в каталоге.
    Адрес блога (URL) это адрес именно Блога, а не системы вордпресс.
    то есть, рассмотрим ваш случай.
    Адрес WordPress (URL) это у вас http:// мой_сайт.ру/wordpress
    Адрес блога (URL) будет http:// мой_сайт.ру/
    Копировать файлы index.php и .htaccess надо как раз в корень из папки /wordpress (наглядно: /wordpress —> /)
    Надеюсь, доступно выразился 😉

  • Saxx

    Я так пробовал, видимо не хватает прав:
    Ответ: 550 .htaccess: Permission denied
    Ошибка: Критическая ошибка при передаче файлов
    Пробовал изменить права, не получается…

  • тогда пишите в тех.поддержку своего хостера, они то точно имеют права.
    Бывают ситуации, когда на определенном хостинге без тех.поддержки ничего толком и не решить…

  • Saxx

    Вот ответ на вопрос из поддержки:
    Вопрос: — Поясните пожалуйста имя каталога, который является для меня корневым?
    Ответ: Корневой каталог — это папка httpdocs, но в Вашес случае — это каталог куда установлен wordpress.
    Так куда копировать? Что-то я запутался…

  • httpdocs это корневой каталог, как я понял.
    Советую полностью расписать вашу ситуацию специалисту из тех.поддержки, все же это его работа 😉 а я просто любитель.
    копировать как раз в httpdocs

  • Saxx

    Вроде все получилось, вот по шагам расписал:
    1. Адрес WordPress (URL) оставил прежним
    2. Адрес блога (URL) изменил, убрав приставку wordpress
    3. Обновил настройки
    4. Открыл файл index.php из корневого каталога, внес изменения (вместо require('./wp-blog-header.php') сделал require('./wordpress/wp-blog-header.php'))
    5. Скопировал файлы index.php и .htaccess из каталога с WordPress в httpdocs
    6. Обновил шаблон Постоянных ссылок с на /%post_id%-%postname%//%postname%/
    7. Обновил все. Все работает!

    Не понял из инструкции п.10 — Войдите в новое место. Это может быть http:// example.com/wordpress/wp-admin/
    Что подразумевается под этим?
    И не понял насчет постоянных ссылок — зачем нужно было изменять ?
    Прошу пояснить как любитель любителю…

  • Как раз делали по пунктам, которые я писал.
    "новое место" — видимо просто ошибка с переводом, там они подразумевали панель администрирования.
    Постоянные ссылки можно было не менять, но все равно нажать кнопку "сохранить", чтобы движок прописал все настройки в новом .htaccess

  • Saxx

    Постоянные ссылки изменил на /%postname%.html/ , т.к. пересали приписываться окончания .html. До этого стоял плагин .html on PAGES, но сейчас, после проделанных изменений, он перестал работать. Сейчас .html приписывается к страницам из рубрик, а к страницам из меню нет 🙁

  • Saxx

    Так что, постоянные ссылки можно оставить /%post_id%-%postname%/?

  • да, можете оставить /%post_id%-%postname%
    Даже скажу больше, чтобы все работало без плагина, сделайте лучше /%post_id%-%postname%.html

  • Saxx

    /%post_id%-%postname%.html/ сделал уже, но без плагина не прибавляет .html
    Оставил и постоянную ссылку, и плагин. Спасибо, буду другие проблемы решать.. Надеюсь вы не против, если что-либо спрошу когда прижмет?

  • у вас ошибка: /%post_id%-%postname%.html/ так не правильно, лучше так:
    /%post_id%-%postname%.html
    видите? слеша в конце нет. попробуйте так.
    Конечно, спрашивайте, чем смогу, как говорится…

  • Saxx

    Без слеша на всех страницах выдает ошибку 404

  • Может что-то не правильно сделали? посмотрите тут — [ссылка]
    Сам так не пробовал, уже поздновато, в индексе более 100 страниц. Но написано вроде хорошо.

  • Ekaterina

    Интересно, многие хотят убрать надпись, а я хочу ее прописать, хотя с файлом comment-template все нормально, не могу в теме найти что прописать, с дефолтной темой вроде есть надпись, с другими нет

  • Ruslan4ik8

    у меня два вопроса) 1. Если убрать из комментов хтмл , то и ссылки на комментаторов в графе сайт будут неактивными? и второй вопрос в какое место вставлять этот код для отключения хтмл? в некоторых местах он вызывает ошибку , а в каком то нет. Но как проверить работает или нет не знаю.

  • Ссылки останутся активными, проверить можно написав что-то используя html теги, если они сработают, значит не получилось, если останутся в теле комментария, как обычные слова, то код работает.
    Если хотите убрать ссылку на автора, то это можно сделать в functions.php начиная со строк div class=»commenttext»…
    Но изменяйте там только, если понимайте, что делаете!

  • Ruslan4ik8

    а ссылки комментаторов должны быть кликабельными? то есть ники должны быть кликабельными или нет?

  • Это уже как вы хотите =)
    Обычно оставляют кликабельными, но закрывают тегами nofollow (так по умолчанию)

  • Ruslan4ik8

    не , я не хочу , а как во всех постах сразу сделать их не кликабельными?

  • В comments.php уберите строчку, где есть p input type=»text» name=»url»…. …..for=»url» small Сайт /small /label /p
    ——
    Скобки убрал, так как не получается представить в нормальном виде.

  • Ruslan4ik8

    ссылку на сайт я убрал , но в старых постах то ссылки остались.Это они в будущем не будут кликабельными. В старых постах можно как то сделать их не кликабельными?

  • Разве у вас статичный html сайт?
    Или вы используйте кеширование?
    Потому что если вы убрали ссылку в комментариях где-то в одном месте, то во всех остальных местах она автоматически уберется… Подождите просто или отключите кеширующий плагин…

  • Ruslan4ik8

    да , у меня плагин кеширования стоит..Но не думаю , что причина именно в нем..Отключил плагин кеширования , но ссылки на комментаторов остались

  • Возможно, вы убрали только поле для новых комментариев.
    Поиграйтесь с functions.php около строки commentwrapper….
    Но на вашем месте я бы не отключал ссылки на комментаторов, просто перестанут комментировать (выше я дал ссылку, стоит почитать).

  • Нашел решение вот здесь:
    [ссылка]

  • Спасибо очень помагло

  • В Joomla это помоему легко делается при помощи компонента jcomments

  • Аноним

    намного проще удалить или закомментировать 1540 строку в comment-template.php. Тогда будет работать код после поля ввода комментария.

  • Спасибо все работает

  • Алевтина Брайнгер

    Благодарю, все получилось!

  • Sho_za

    Подскажите пожалуйста, как удалить с Комментарий на «Заголовок статьи», заголовок статьи. Чтобы была просто надпись «Коментарии».

  • Советую поставить DISQUS — очень удобная система!
    У себя в коде не нашел, как удалить эти строчки…

  • Саша

    я не могу найти строку что делать? у меня стоит twentyten тема

  • Visio

    А у меня другая ситуация: сыпался спам, где либо поле url было заполнено+в тексте комментария ссылки, либо текст без ссылок, зато в url ссылка есть. Хотел именно блокировать его добавление.

    Пробовал убирать поле url из шаблона темы comments.php. Так тогда url поле соответственно пустое, а текст остается (пусть и без ссылок, но все же не по теме).

    Сделал так:

    1) В comments.php оставил поле ссылки на сайт, но добавил аргументы autocomplete=»off» и style=»display:none»

    2) В wp-comments-post.php прописал это после проверки на пустоту текста комментария:

    if( preg_match(‘/(nofollow|url|link)/i’, $comment_content ) == true || 4 < strlen($comment_author_url))

    wp_die( __('ERROR: СПАМ не пройдет!’) );

    Что мы получаем в итоге? обычным посетителям поле для ввода сайта не видно, соответственно они не заполняют его, его длина=0 и если в тексте комментария нет таких слов как nofollow, url или link — коммент проходит

    А программы-автоспамеры по идее не видят обманку, заполняют поле с url, что приводит к выводу сообщения с ошибкой. Если они не заполняют его, но в тексте коммента есть ссылка — тоже самое выходит сообщение и комментарий не добавляется.

    Вручную спамить тоже теперь нет смысла, ссылку же не пропихнуть никуда.

    autocomplete=»off» прописал для того, чтобы не вышло так, что поле url заполнялось автоматически браузером и нормальный комментарий не проходил из-за этого.

    Лично все проверил на WP 3.5.1 — работает без проблем. Как будет со спамом пока не знаю, нужно ждать, но уверен, что теперь он сократится существенно.

    Может вдруг поможет этот способ, а то искал как сделать, чтобы комментарий блокировался, если в тексте есть ссылки — везде только преобразование его в обычный текст.

  • Сергей

    Спасибо за информацию, все подробно и четко описано

© 2017 Atamovich.ru

MAXCACHE: 0.45MB/0.00025 sec