Здравствуй, уважаемый посетитель!
Многие пользователи 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)
Ни в коем случае не удаляйте ,' <code>' . allowed_tags() . '</code>' ) . '</p>',
— у меня перестал работать сайт из-за этого. Хотя может и что-то лишнее удалил, но разбираться уже не хочется.
На этом всё, с вами был Atamovich.
зачетно что сделал. ато до этого стоял.
а вопрос. а какая разница в хтмл есть или нет он в комментах??
могут, например, поставить ссылку в пробеле. или много ссылок. Тут все зависит от фантазии спамеров)
А весь код в теги ноиндекс и нофолов закоментить это что???
Отличная информация, подробно и поэтому понятно! Два дня сидел пока сам допер… Делаю первый сайт, учить некому 🙂 Если можно, нужна еще информация о том как убрать слово wordpress из url'а. Например сейчас адреса страниц у меня выглядят так: http:// мой_сайт/wordpress/about.html
А как сделать чтобы было http:// мой_сайт/about.html ?
Инфу нашел про манипуляции с файлом .htaccess, а у меня их два. Один на сервере в папке httpdocs, другой в httpdocs/wordpress/
Какой из них править согласно хелпу в админке?
Что-то ссылки искажены 🙁
Там ничего в .htaccess править не нужно 😉
Вид ссылок можно редактировать так: заходим в "Консоль", далее в "Параметры" —> "Постоянные ссылки" — там выбираем "произвольно" и пишем вот что: /%postname%/ (либо /%postname%.html) это зависит от ваших предпочтений уже.
Если оставите слеш в конце, то будет как у меня, если допишите .html то будет мой_сайт/название статьи.html
Очень советую, чтобы название статьи это было на латинице, а не на русском. Для этого хорошо использовать плагин "RusToLat" — мне помогает.
Были искажены, так как плагин "RC Link Redirector" был настроен по старому у меня. До того, как я отключил html в комментариях, он обращал все ссылки в такую "белеберду": atamovich.ru/24f523/XUwWFV8bS+C….
Для избежания лишних прямых ссылок. Сейчас это не актуально уже.
У меня в постоянных ссылка прописано /%post_id%-%postname%/
Почему так — уже не вспомню, но теперь когда меняю то 404!. А наполнение сайта на 70-80% выполнено, как быть-то?
сайт на локальном сервере? или в интернете?
где расположен сам движок?
есть подозрение, что вордпресс у вас установлен не в корневой папке, а в каталоге, поэтому и дописывается так.
404 возникает вообще при загрузке сайта или со старых ссылок?
по какой инструкции разбирались с .htaccess?
Сайт в интернете, а WordPress действительно установлен в папку wordpress. 404 возникает при загрузке старых страниц, меню сайта осталось как и раньше. Инфу нашел тут http://codex.wordpress.org/%D0%A0%D0%B0%D0%B7%D0%BC%D0%B5%D1%89%D0%B0%D0%B5%D0%BC_WordPress_%D0%B2_%D0%BE%D1%82%D0%B4%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D0%BC_%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D0%B5
Ну если я правильно понял, сайт Изначально был установлен в каталог.
Тогда пунктов гораздо меньше получается:
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 сохранит туда все настройки.
Если меню вы выводите виджетом, а не как "текст", то там все обновится.
Вот и все, должно получиться!
Адрес 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 —> /)
Надеюсь, доступно выразился 😉
Я так пробовал, видимо не хватает прав:
Ответ: 550 .htaccess: Permission denied
Ошибка: Критическая ошибка при передаче файлов
Пробовал изменить права, не получается…
тогда пишите в тех.поддержку своего хостера, они то точно имеют права.
Бывают ситуации, когда на определенном хостинге без тех.поддержки ничего толком и не решить…
Вот ответ на вопрос из поддержки:
Вопрос: — Поясните пожалуйста имя каталога, который является для меня корневым?
Ответ: Корневой каталог — это папка httpdocs, но в Вашес случае — это каталог куда установлен wordpress.
Так куда копировать? Что-то я запутался…
httpdocs это корневой каталог, как я понял.
Советую полностью расписать вашу ситуацию специалисту из тех.поддержки, все же это его работа 😉 а я просто любитель.
копировать как раз в httpdocs
Вроде все получилось, вот по шагам расписал:
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
Постоянные ссылки изменил на /%postname%.html/ , т.к. пересали приписываться окончания .html. До этого стоял плагин .html on PAGES, но сейчас, после проделанных изменений, он перестал работать. Сейчас .html приписывается к страницам из рубрик, а к страницам из меню нет 🙁
Так что, постоянные ссылки можно оставить /%post_id%-%postname%/?
да, можете оставить /%post_id%-%postname%
Даже скажу больше, чтобы все работало без плагина, сделайте лучше /%post_id%-%postname%.html
/%post_id%-%postname%.html/ сделал уже, но без плагина не прибавляет .html
Оставил и постоянную ссылку, и плагин. Спасибо, буду другие проблемы решать.. Надеюсь вы не против, если что-либо спрошу когда прижмет?
у вас ошибка: /%post_id%-%postname%.html/ так не правильно, лучше так:
/%post_id%-%postname%.html
видите? слеша в конце нет. попробуйте так.
Конечно, спрашивайте, чем смогу, как говорится…
Без слеша на всех страницах выдает ошибку 404
Может что-то не правильно сделали? посмотрите тут — http://elmexicano.ru/nastrojka-chpu-na-wordpress/
Сам так не пробовал, уже поздновато, в индексе более 100 страниц. Но написано вроде хорошо.
Интересно, многие хотят убрать надпись, а я хочу ее прописать, хотя с файлом comment-template все нормально, не могу в теме найти что прописать, с дефолтной темой вроде есть надпись, с другими нет
у меня два вопроса) 1. Если убрать из комментов хтмл , то и ссылки на комментаторов в графе сайт будут неактивными? и второй вопрос в какое место вставлять этот код для отключения хтмл? в некоторых местах он вызывает ошибку , а в каком то нет. Но как проверить работает или нет не знаю.
Ссылки останутся активными, проверить можно написав что-то используя html теги, если они сработают, значит не получилось, если останутся в теле комментария, как обычные слова, то код работает.
Если хотите убрать ссылку на автора, то это можно сделать в functions.php начиная со строк div class=»commenttext»…
Но изменяйте там только, если понимайте, что делаете!
а ссылки комментаторов должны быть кликабельными? то есть ники должны быть кликабельными или нет?
Это уже как вы хотите =)
Обычно оставляют кликабельными, но закрывают тегами nofollow (так по умолчанию)
не , я не хочу , а как во всех постах сразу сделать их не кликабельными?
В comments.php уберите строчку, где есть p input type=»text» name=»url»…. …..for=»url» small Сайт /small /label /p
——
Скобки убрал, так как не получается представить в нормальном виде.
ссылку на сайт я убрал , но в старых постах то ссылки остались.Это они в будущем не будут кликабельными. В старых постах можно как то сделать их не кликабельными?
Разве у вас статичный html сайт?
Или вы используйте кеширование?
Потому что если вы убрали ссылку в комментариях где-то в одном месте, то во всех остальных местах она автоматически уберется… Подождите просто или отключите кеширующий плагин…
да , у меня плагин кеширования стоит..Но не думаю , что причина именно в нем..Отключил плагин кеширования , но ссылки на комментаторов остались
Возможно, вы убрали только поле для новых комментариев.
Поиграйтесь с functions.php около строки commentwrapper….
Но на вашем месте я бы не отключал ссылки на комментаторов, просто перестанут комментировать (выше я дал ссылку, стоит почитать).
Нашел решение вот здесь:
http://times.fireg.ru/?p=1513
Спасибо очень помагло
В Joomla это помоему легко делается при помощи компонента jcomments
намного проще удалить или закомментировать 1540 строку в comment-template.php. Тогда будет работать код после поля ввода комментария.
Спасибо все работает
Благодарю, все получилось!
Подскажите пожалуйста, как удалить с Комментарий на «Заголовок статьи», заголовок статьи. Чтобы была просто надпись «Коментарии».
Советую поставить DISQUS — очень удобная система!
У себя в коде не нашел, как удалить эти строчки…
я не могу найти строку что делать? у меня стоит twentyten тема
А у меня другая ситуация: сыпался спам, где либо поле 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 — работает без проблем. Как будет со спамом пока не знаю, нужно ждать, но уверен, что теперь он сократится существенно.
Может вдруг поможет этот способ, а то искал как сделать, чтобы комментарий блокировался, если в тексте есть ссылки — везде только преобразование его в обычный текст.
Спасибо за информацию, все подробно и четко описано