Как убрать (отключить) комментарии в WordPress. Тонкая настройка формы комментирования

Давненько я ничего не писал про WordPress. Поэтому сегодня я поделюсь с Вами тем, как можно вручную изменить форму комментирования в ВордПрессе. Думаю, что эти знания могут пригодиться любому начинающему блогеру, ведь форма комментирования это, порой, единственное средство общения посетителей и автора. Не проходите мимо:)

Перед тем, как мы начнем какие-либо манипуляции с кодом, хочу Вас заранее предупредить, что мы будем править файлы самого WordPress’a, а не файлы темы. Да, это может-быть покажется кому-то опасным, кому-то бессмысленным, кому-то просто не понравится:) Но Я сделал это именно так и никаких проблем у меня не возникло. Советую перед началом сделать бекап редактируемого файла.
Насчет безопасности предупредил, теперь хочу показать результат, к которому я пришел.


Как мы видим, была убрана строчка «Ваш e-mail не будет опубликован. Обязательные поля помечены *». Не нужно считать посетителей безмозглыми идиотами. Они итак понимают что нужно заполнять, а что нет. Так же я спрятал названия полей внутрь самих полей. К чему эти жирные записи? Большинство посетителей уже и без названий полей может «на глаз» определить, какое к чему относится. Но внутренние хинты все таки должны присутствовать. Ну и подпись к полю комментария утратила свою ненужную жирноту. На мой взгляд, так стало гораздо лучше и свободней.

Так давайте же скорее все менять! ;)
Идем в папку своего сайта и находим в нем файл wp-includes/comment-template.php. Ищем в нем строку 1522, да да именно ее. Как я сам ее нашел это целая история, расскажу об этом чуть позже:)
Итак, открываем файл на редактирование и переходим к 1522 строчке. Сейчас она и следующие (до 1529й) примерно такие:

$fields = array("author" => "

" . " " . ($req ? "*" : "") . "

", "email" => "", "url" => "

" . "

",);

Как все просто и понятно. Достаточно просто вырезать все лишнее и немного дописать. Дописывать будет параметр

Placeholder="Текст подсказки"

Этот параметр позволяет выводить внутри полей любой текст. Используем его для вывода подсказок:

"

" "

" "

"

Удалять же будем строки:

"

" . " " . ($req ? "*" : "") "

"

Они отвечают за вывод подписей над полями.
В результате ВСЕХ этих манипуляций, получаем следующее:

$fields = array("author" => "

", "email" => "

", "url" => "

",);

Остается только удалить глупую подсказку «Ваш e-mail не будет опубликован. Обязательные поля помечены *». Для этого удаляем строку (примерно 1537):

"comment_notes_before" => "

" . __("Your email address will not be published.") . ($req ? $required_text: "") . "

",

Вот вроде бы и все, теперь наша форма стала немного более привлекательной. Надеюсь эта информация кому-то пригодится:)

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

Каждый блоггер прекрасно понимает, что отзывы очень важны для успешности его площадки. Положительный эффект от каждого комментария увеличивается, если благодаря ему будет развернута бурная дискуссия по теме статьи или ее контексту. Активное обсуждение на ресурсе приносит массу положительных «плюсиков»: увеличивается проведенное на сайте время, что может привести к реальной заинтересованности гостями к другим разделам сайта; иногда заметки пользователей могут быть интереснее, нежели сама статья; также будет увеличено количество просмотров ресурса, ведь часть комментаторов возвращается на сайт, чтобы просмотреть ответы или написать еще заметку.

Одна из приоритетных целей любого блоггера – создание вокруг себя сообщества, которое будет на постоянной основе обсуждать его новые статьи и общаться между собой, тем самым генерируя огромное количество полезного (и бесполезного тоже) контента, который может быть интересен читателям.

Естественно, сразу встают вопросы: как сделать комментирование максимально удобным и привлекательным для гостей; стоит ли использовать стандартную форму комментирования или все же стоит поискать другой модуль для комментариев Вордпресс, который внесет свою «изюминку» и т.п. Преимущество штатных отзывов – они есть, гости и пользователи могут легко их добавить, но на этом все. Через время, многим хочется большего, и они начинают искать эти самые модули для вывода оригинальных form.

Наверное, вы уже замечали, что в англоязычном сегменте очень распространены специальные системы для добавления отзывов. У нас они тоже пользуются популярностью, но еще не такой завидной, как за рубежом. В данном материале мы рассмотрим различные модули для комментирования Вордпресс, которые будут полезны не только читателям, но и администраторам сайта.

Disqus – система комментирования, которая содержит в себе огромное количество API, включая Twitter, Google, Facebook, Yahoo, OpenID и пр. К тому же, пользователи имеют возможность авторизоваться под своими данными (поддерживается вывод аватар) в системе Disqus (благодаря этому можно следить за каждым обсуждением, где были оставлены ответы); или же можно просто комментировать при помощи использования имени и e-mail адреса.

de:comments

В начале 2015 года сотрудники компании deco.agency представили миру продукт для работы с комментариями под названием de:comments. Большинство блогов и сайтов имеют системы комментирования по типу вышеописанного Disqus, Facebook Comments, SV-Kament и пр., но разработчики deco.agency решили сделать упор на разработку технической стороны обсуждений.

Система Disqus (и похожие на нее) очень популярна, но, к слову, не лишена и недостатков:

  • есть необходимость в авторизации на самом сайте и системе комментирования Disqus (существует SSO-решение, но количество пользователей, которое сможет в нем разобраться – ничтожно мало);
  • если использовать Disqus в течение, к примеру, нескольких лет, то это приведет к созданию громадной базы отзывов и мета-данных (лайки/дизлайки, рейтинг, файлы из отзывов, бейджи, аватар/фото и пр. информация), следовательно, если перейти на штатный функционал, то все эти данные и останутся в Disqus;
  • при использовании стороннего решения нет возможности редакции внешнего вида и использования локализационной терминологии.

Жирный плюс систем по типу Disqus – их бесплатность, но некоторые проблемы, с которыми приходится встречаться в ходе использования этих систем, не будут стоить никакой экономии. Модуль de:comments в свою очередь предлагается как коробочное решение (не SaaS) с ежегодной оплатой и автоматическими обновлениями.

Главные достоинства (сравниваем сразу с Disqus):

  • максимальная готовность к локализации: можно внести все термины в PO-файл, после чего все легко и просто переводится на нужный язык;
  • богатый набор уже доступных языков: испанский, белорусский, немецкий, испанский, польский, русский, португальский, украинский;
  • графика и стили плагина легко редактируются через редакцию файлов (команда разработчиков сейчас ориентирована на развитие тем оформления для отзывов и совершенствования интерфейса – настройка цветов, шрифтов, иконок и прочих возможностей оформления);
  • есть параллельная авторизация в системе de:comments и в стандартной системе комментирования Вордпресс;
  • идеальная интеграция с мощнейшим социальным модулем WP Social Login, который поддерживает все популярные социальные сети;
  • форма комментариев WordPress поддерживает лайки/дизлайки, бейджи, карму, сортировку, аватар;
  • нет необходимости знать код php;
  • возможность загрузки контента и ссылок с автоподтягиванием информации из сторонних источников;
  • и многое другое.

Стоимость установки на один сайт – $50, на три – $100, а на десять – $300. Сначала цены кажутся несколько завышенными, но если разобраться во всех тонкостях работы и достоинствах модуля, так перестает казаться. Более того, есть приятная новость: в ближайшем времени будет выпущена free форма comments, которая будет иметь урезанный набор функций и реферальную программу, но в любом случае вывод comments с аватар будет присутствовать, что главное.

Официальный сайт:

Subscribe to comments

Многие пользователи задают вопросы в обсуждениях к статье, но боятся не увидеть ответы на них. Чтобы этого не допустить, необходимо сделать подписку на новые ответы WordPress, и читатель всегда сможет быть в курсе всех обновлений. Оформление RSS канала необязательно – можно воспользоваться решением Subscribe to comments, которое информирует пользователя о появлении новых ответов к статье на указанную им почту.

Скачать русскую версию модуля можно по ссылке . Скачанный архив распакуйте, вытащите из него файлы subscribe-to-comments.php и subscribe-to-comments-ru_RU.mo, и закиньте в папку wp-content/plugins. Все, модуль начнет работать сразу же после активации, а в конце формы для написания сообщения появится опция «подписки на обновления». После установки все же рекомендуется немного поиграться с настройками («Параметры» > «Подписка на комментарии»).

Все подписки можно глянуть на отдельной странице. Изначально она полностью белая, из-за чего нагоняет на многих ощущение пустоты. Оформление – выход из ситуации. Просто нужно поставить галочку напротив «Использовать свой стиль», а в поле ниже нужно прописать пути к шаблонам темы, отвечающие за вывод сайдбара, подвала и шапки.

Опция подписки появляется в автоматическом режиме, но ее месторасположение можно изменить при помощи использования кода:

Также заметим, что модуль имеет интересную функцию подписки, и при этом пользователю не нужно будет оставлять ни одного комментария. Идеально подходит для тех людей, которые любят читать чужие мнения, но сами не хотят ничего писать.

HyperComments

Главным отличием данного модуля от других является то, что есть возможность оставлять мнения к различным участкам текста на странице. То есть, если вы вычитали какую-то фразу, цитату или мнение в статье, то его можно будет выделить и высказать свое мнение именно по этому поводу. Чтобы это сделать, достаточно выделить нужную текстовую область и оставить свою заметку.
После этого фрагмент будет подсвечен и станет кликабельным. Пользователи в свою очередь смогут обратить на него свое внимание, а также развернуть всю ветвь дискуссии. После клика каждый из пользователей сможет добавить и свой отзыв.

Главные достоинства HyperComments:

  • возможность комментирования определённого участка текста;
  • гостям нет нужды в ожидании перезагрузки, ведь работа выполняется в режиме настоящего времени (модерация также происходит в этом режиме);
  • регистрация не требуется;
  • защита от спама;
  • поддержка аватар и прочих мета-данных;
  • можно добавить пользователей в белый и черный список;
  • импорт/экспорт существующих комментариев;
  • гиперкомментарии индексируются поисковыми машинами;
  • нет необходимости копаться в коде php.

Для его настройки потребуется авторизоваться через Google аккаунт. На самом деле не совсем понятно, зачем все это, но в любом случае, все это выполняется достаточно быстро. Забыли сказать, что HyperComments распространяется на условно-бесплатной основе, но первые 30 дней бесплатны для всех планов. Есть и free form comments, но работать она будет только на одном сайте и с некоторыми урезанными возможностями. Кстати, за пару баксов, там же можно дополнительно получить оформление (темы), экспорт комментариев, аналитику, White Label, отчеты модераторов.

Подбивая итоги, скажем, что выделение фраз или слов позволяет создавать некоторого рода «точки фокусировки» для других пользователей, на которые они сразу будут обращать внимание. Как результат – интересное и интерактивное общение с другими комментаторами.

Cackle

Данный модуль добавляет на площадку WordPress form комментирования в режиме настоящего времени, которая дает возможность оставлять мнения при помощи авторизации через популярные поисковые системы: Вконтакте, Google+, Twitter, Facebook, Blogger, Yahoo, Live Journal и множество других.

Использование плагина приводит:

  • к увеличению посещаемости площадки за счет привлечения новых посетителей через соц. сети (кросспостинг отзывов и индексация);
  • к уменьшению нагрузки на сайт, ведь используется сторонняя система для обсуждений;
  • к появлению красивого и мощного решения для создания активного обсуждения, вместо стандартных и невзрачных form;

Возможности:

  • можно добавлять виджет на каждую страницу или пост (нет нужды копаться в коде php);
  • обсуждения индексируются поисковиками;
  • есть возможность создания резервной копии базы Cackle в базу данных WordPress;
  • экспорт данных из WordPress в Cackle;
  • возможность кастомизации html для SEO;
  • возможность быстрого включения/выключения комментирования для каждой отдельной страницы/поста;
  • единая авторизация для пользователей WordPress площадки и системы Cackle (комментарии показываются с аватар, именем и ссылкой на профиль).

В качестве защиты используется трехуровневая система от спама (Cackle Flood Detector, Cackle Spam Detector, Cackle Spam Shield). Загрузить Cackle можно на странице .

По мере роста вашего сайта количество заметок от пользователей и гостей на страницах будет увеличиваться, и если их будет слишком много, то во всей этой свалке будет очень сложно разобраться. Выход из ситуации – форма древовидных комментариев, благодаря которым их будут действительно читать, а не пролистывать.

Сейчас никому нет дела до регистраций на сайте, но для администраторов это важно, ведь без регистрации есть высокий шанс свой сайт в «мусорник» спам-отзывов. Идеальное решение – использование уже существующих регистраций; речь идет о социальных сетях, ведь у большинства пользователей сети есть аккаунт хотя бы в одной из них. Да и к тому же статистика показывает, что использование социальных form увеличивает количество регистраций на ресурсе на несколько десятков процентов.

Для подключения площадки необходимо перейти по адресу и подключить его. Далее необходимо поставить сам модуль, который доступен по линку .

TWC

Плагин Templates WP Comments (TWC) позволяет добавить древовидные комментарии с новой защитой от спама без использования капчи. Плагин основан на базе стандартных функций, а для его вызова достаточно вставить базовую функцию comments_template(), которая присутствует в каждой теме. Таким образом, плагин заменяет собой стандартную form comments и делает вывод собственной.

После установки вы получите:

  • вывод древовидных отзывов;
  • возможность управлять внешним видом отзывов с панели администратора;
  • возможность сворачивать и сворачивать form древовидных отзывов;
  • спам защита.

Рассматриваемый плагин создавался с одной целью – упростить подключение виджета социальной сети Вконтакте к . То есть, нет необходимости в создании виджета отзывов через форму на сайте ВК. Вывод в код php практически не требуются.

Достоинства плагина:

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

Процесс установки плагина мы опустим, но вот некоторые его настройки стоит рассмотреть:

  • ID приложения – идентификатор приложения ВК, которое необходимо создать для вашего сайта;
  • Отображение комментариев – первые два варианта позволяют выводить их без внесения всяких правок в шаблон темы (в случае, если отзывы не выводятся автоматически, то придется использовать ручной вывод);
  • E-mail адрес получателя и отправителя – адрес на который будет приходить оповещения о обновлениях и адрес отправителя писем соответственно;
  • Заголовок письма – изменяет стандартный заголовок письма на любой другой;
  • Текст письма – изменяется на любой необходимый.

Помимо этих опций, существуют и макросы, для настройки писем:

  • – имя блога или сайта;
  • – ссылка на страницу с отзывами;
  • – текст отзыва.

Это почти все настройки плагина, более подробно о его установке и настройке можно почитать

Часто случается, что приходится отключать комментарии в WordPress. Причины у всех бывают абсолютно разные.

Кому-то нужно убрать форму комментирования из-за ненадобности, кто-то заменяет ее на различные решения от известных платформ комментирования (Disqus или Cackle), а другие просто убирают данный функционал по собственному желанию.

Отключить комментарии в WordPress можно несколькими способами. Вы можете сделать это в панели администратора, запретив комментирования записей или страниц. А можно отключить комменты с помощью удаления куска кода в вашей теме. Давайте разберем оба варианта более подробно в виде пошаговой инструкции.

Как запретить комментарии в WP к записям и страницам

Для выполнения этой операции вам понадобится зайти в панель администратора и перейти на вкладку под названием Параметры — Обсуждение. На этой странице находятся все настройки вашего сайта относительно комментирования.

Чтобы отключить комментарии вам нужно убрать галочки с нескольких пунктов. Для большей наглядности, выкладываю скрин.

После того, как вы уберете все галочки, не забудьте нажать на кнопку Сохранить изменения. Эти настройки действуют глобально на весь ваш сайт. Если вы вдруг хотите отключить комментарии у отдельно взятой записи ил страницы, то вам нужно перейти в режим редактирования этого поста и убрать галочки там.

Как удалить код комментариев в WordPress

Если вам мало просто запретить комментирования ваших статей, то можно полностью удалить код этой функции вручную из самого кода вашей темы. Для этого вам нужно зайти в админпанель, нажать на Внешний вид — Редактор и справа выбираем single.php (одиночная запись).

В этом файлы вам нужно найти следующий код:

Эта функция отвечает за вывод формы комментариев в ваших постах. Если ее удалить, то и оставить отзыв уже никто не сможет, что нам и нужно. Убираем эту строчку и сохраняем наш файл. Те же манипуляции проводим и в файле page.php.

Есть еще один варварский способ избавить от комментов. Для этого нужно полностью очистить файл вашей темы под названием comments.php, но лучше действовать двумя выше изложенными способами. Если у вас возникнут вопросы по этому мануалу, пишите в комментариях, я обязательно вам помогу.

На многих блогах комментарии оформлены небрежно. Это, безусловно, не есть хорошо, ведь именно через комментарии происходит общение между автором блога и его читателями. Именно поэтому я предлагаю рассмотреть несколько полезных «штучек», которые помогут привести ваши комментарии в надлежащий вид. Итак, сразу приступим к делу.

Все написанное ниже я проделал и проверил сам. Каждый хак проверен для версий WordPress до 2.7 и после. Если есть отличия, код разбирается для обеих версий.

Проблема: Не зависимо от того, разрешаете ли вы своим читателям оставлять комментарии без предварительной модерации, их часто приходится редактировать, удалять или отправлять в «спам». По умолчанию WordPress показывает только кнопочку «Редактировать» (делается это при помощи функции edit_comment_link ()) , но кнопочек «Удалить» и «Спам» нет. Стоит добавить.

Решаем проблему: В первую очередь добавим небольшую такую функцию в functions.php нашего шаблона.

function delete_comment_link($id) { if (current_user_can("edit_post")) { echo " (Удалить)"; echo " (Спам)"; } }

Найдем что-то в духе:

И у нас появятся волшебные кнопки «Удалить» и «Спам». Очень надеюсь эти кнопочки вам не пригодятся, а все комментарии будут по делу.

2. Разделяем комментарии и трекбеки

Об этом я уже писал в (для версий WP 2.7 и выше).
Пожалуй стоит написать и для более старых версий.

Проблема: Необходимо сделать раздельный вывод комментариев и трекбеков в записи. Проблема актуальная если ваш пост имеет много трекбеков оставленных в разное время. В этом случае комментарии и трекбеки превратятся в кашу, в которой вы сами не разберетесь, не говоря уже про ваших читателей.

Решаем проблему: Повторюсь, это способ для шаблонов WordPress до версии 2.7.

Открываем файл comments.php нашей темы и находим там примерно следующее:

Берем и заменяем этот код полностью на следующий:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
  • //Comment code goes here
  • < ul>

  • //Comment code goes here
    • Все гораздо проще, чем в версии 2.7 и выше. К тому же после разделения можно оформить стиль списка комментариев и списка трекбеков персонально.

      Проблема: Блоггеры ищут любой способ продвижения своего блога. Спаммеры везде. А вас не раздражают «левые» ссылки в комментариях? Если вы модерируете все комменатрии, то все понятно, ничего лишнего не пройдет. А если комментариев слишком много, времени на модерацию нет, комментарии публикуются без вашей проверки? Реальная проблема. Еще и WordPress дружелюбно превращает URL’ы в комментариях в активные ссылки.

      Решаем проблему: Открываем файл function.php нашей темы и добавляем следующий код:

      1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 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 ) ;

      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-код будет отображаться в комментариях как простой текст. Это, однако, не отключает автотрансформацию url в ссылку, но это и хорошо, пользователям не придется мучиться с копированием адреса в адресную строку браузера, чтобы перейти по ссылке. А вот интерес спаммеров к вашему блогу сразу уменьшится.

      Проблема: Для постов, имеющих большое количество комментариев, найти комментарии автора проблематично. Особенно если читатель задал вопрос и ищет ответ. Ведь только в версии WordPress 2.7 появилась функция ответа на комментарий, а до этого все комменты шли подряд, сортируясь по дате. Как же выделить комментарии автора поста?

      Решаем проблему: В WP версии 2.7 и старше мало того что появилась функция ответа, так еще и все уже за нас сделано. Если же у вас WP от 2.7 и свежая тема, но ваши комментарии, как автора поста, ничем не выделяются от других комментариев, вам стоит всего лишь прописать в файле темы style.css стиль для класса bypostauthor , например:

      После этого сразу ниже вставляем:

    • Теперь необходимо присвоить класс, применяемый, если автор комментария является автором поста:

      Authorcomment{ color:#fff; font-weight:bold; background:#068; }

      Все просто, теперь вам остается только все красиво представить, все зависит от вашей фантазии.

      Итак, сегодня я рассказал вам про часть полезных «фишек» которые можно проделать с комментариями. У меня в запасе есть еще парочка трюков, так что обязательно подписывайтесь на RSS и ждите следующего выпуска. Жду ваших отзывов и комментариев. И если вдруг у вас возникнут какие то проблемы, то обязательно отписывайтесь в комментариях, будем разбираться.

      С уважением, Александр Алаев

      Лезть в код или не лезть? Раньше мы уже говорили, что форма комментариев немного сложна, и поэтому создатели все максимально упростили.

      Функция вызова комментариев простая и не имеет параметров

      Выглядит просто, но делает очень много. Фактически она создает огромное количество html кода и использует кучу php кода. Т.к. эта функция генерирует весь готовый html код, то нам придется иметь с ним дело без возможности как-то отрегулировать или настроить использованием параметров. Это может быть определенной проблемой, с учетом того, что мы не очень можем этот html код изменить. Не нравятся классы div? Не хотите использовать граватары? Желаете изменить порядок вывода строк?

      Со всем этим придется смириться и скрывать ненужные вещи с помощью css. С этой точки зрения вам нужно будет определиться - по какому пути предпочтений вы пойдете:

      wp_list_comments

      • легко использовать
      • встроенный функционал комментирования
      • встроенный функционал разбития на страницы
      • встроенный функционал древовидного отображения
      • css классы по умолчанию для базовых задач

      пользовательская функция комментариев

      • абсолютный полный контроль над всем
      • стандартные и пользовательские css классы
      • наличие плагинов для добавления нужного функционала

      Выбор метода формирования комментариев зависит от множества факторов. В общем, мы рекомендуем использовать wp_list_comments и не морочить голову. Если же вам нужно сделать что-то свое, особенное и специфическое, с желаемым функционалом и возможностями, и это желание подкрепляется знаниями, то использование пользовательских циклов даст возможность это все воплотить.

      Кроме этого есть старый добрый метод вывода комментариев с помощью цикла foreach, поэтому нам еще есть с чем разобраться.

      wp_list_comments() или пользовательский цикл?

      До версии 2.7 цикл вывода комментариев был на базе запросов к базе данных и отображался несколько извилистым, но хорошо понятным путем.

      Затем комментарии были обогащены дополнительным функционалом — постраничной навигацией и древовидной вложенностью. Эти возможности активировались через админку, и цикл foreach был заменен на уже показанную функцию wp_list_comments. Однако этот цикл по прежнему остается работоспособен, правда по понятной причине не поддерживая дополнительный функционал.

      Хотя wp_list_comments и не выглядит как цикл, но она делает все тоже самое, повторяет раз за разом запросы и вывод комментариев, пока они не закончатся, размечая их соответствующими тегами.

      Обычно готовый хтмл код одного комментария выглядит примерно так:

      1. Имя комментатора says:

        Спасибо, у вас супер сайт!

      Как видно, цикл вывода комментария содержит картинку-граватар, несколько дивов, много разных css классов, ссылку на автора и собственно текст комментария. Если это вас устраивает — то это хорошо, больше ничего делать и не нужно.

      В этом случае вы можете протянуть свои руки только к следующим доступным параметрам wp_list_comments:

      • размер аватары по умолчанию 32 пикселя
      • стили css — используя их названия можно изменить параметры на нужные
      • стиль вывода списка комментариев style. По умолчанию комментарии выводятся тегами неупорядоченного списка
          , но если вы вместо этого хотите использовать упорядоченный список
            , то используйте такой параметр "ol")); ?>
          1. тип type — строковый параметр, отвечающий за отображаемые комментарии. Доступные параметры — all, comment, trackback, pingback, pings. Pings означает, что будут выводиться вместе и трекбеки, и пингбеки. По умолчанию параметр равен all, т.е. все комментарии отображаются.
          2. текст ответа reply_text — определяющий, что будет написано на ссылке ответа на комментарий, обычно «Ответить»
          3. текст авторизации login_text — отображается в случае, если для ответа необходимо авторизироваться на сайте, обычно «Авторизируйтесь для комментирования»
          4. callback — имя пользовательской функции для отображения комментариев.
          5. Дополнительные параметры, доступны

        Это немного, но в большинстве случаев достаточно для минимально необходимых модификаций. Если нужно больше, то придется использовать пользовательский цикл либо вмешиваться в php код, написанный в comments.php, либо добавлять нужный функционал в functions.php.

        Шаманим в functions.php

        Для начала укажем в comments.php, что мы будем использовать свою пользовательскую функцию

        Теперь создадим в functions.php свою пользовательскую функцию

      • id="li-comment-">
        ");?> %s says:"), get_comment_author_link()); ?>
        comment_approved == "0") : ?>
        $depth,"max_depth" => $args["max_depth"]))); ?>
        Обратите внимание, что мы не закрываем тег
      • , т.к. вордпресс автоматически создаст закрывающие теги в зависимости от разметки вложенных комментариев.

        Будучи размещенным, данная функция будет вызываться при генерации комментариев и позволяет вносить в себя любые нужные правки. Фишка в том, что мы сделали все, что нам нужно, используя стандартную и достаточно ограниченную в настройках wp_list_comments()

        А теперь давайте тряхнем стариной - вместе с wp_list_comments поставим цикл foreach

        Такое использование позволит шаблону быть обратно совместимым со старыми версиями вордпресса.

        Теперь, зная как настроить цикл комментариев, давайте модифицируем его под свои нужды и применим несколько прикольных трюков.

        Реализуем постраничные комментарии

        Заранее никто не знает, что контент на сайте может привлечь сотни комментариев. К чему я клоню — мы все суперзвезды и успех может придти неожиданно. Запись с сотней комментариев может быть безумно длинной для просмотра и перемотки. В общем, мы конечно не боимся вертикальной прокрутки (в отличие от горизонтальной), но границы должны быть у всего. Типичный пост с 60 комментариями может быть до 20 тыс. пикселей в высоту!

        Великолепный способ навести порядок - это разбивать ленту комментариев на страницы и отображать их постранично.

        Включив постраничную навигацию, не забудьте добавить в файл comments.php функции для вывода ссылок «Раньше» «Позже»

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

        И здесь есть один подвох. Возникает известная сео проблема дублирования контента с постраничными комментариями. Это происходит из-за того, что создаются одинаковые урлы для каждой страницы комментариев

        • https://yoursite.com/ghost-dad-rocked/
        • https://yoursite.com/ghost-dad-rocked/comments-page-1/
        • https://yoursite.com/ghost-dad-rocked/comments-page-2/
        • https://yoursite.com/ghost-dad-rocked/comments-page-3/

        Понятно, что на этих страницах разными будут только комментарии. Что еще больше ухудшает общую картину — каждый комментарий имеет свою собственную уникальную ссылку с временем публикации, что еще добавляет пачку дублей. Поэтому поисковый бот обнаружит один и тот же контент под огромным количеством разнообразных ссылок.

        Чтобы избежать дублирования, есть несколько решений:

        1. Не использовать постраничные комментарии
        2. Использовать мета-теги для создания канонических урл для каждой записи
        3. Использовать плагин

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

        SEO for Paged Comments применяет еще более радикальный способ — убирая содержимое записи с страниц комментариев и заменяя на цитату или урезанную версию записи.

        Реализуем вложенные комментарии

        Вложенные древовидные комментарии позволяют посетителям писать ответ выбранному существующему комментарию, создавая развернутое обсуждение диалог. После активации этой возможности в настройках, возле каждого комментария появится ссылка «Ответить», позволяющая высказаться по конкретному комментарию.

        До появления такой возможности существовал стиль ответа выбранному автору, используя в тексте комментария его имя и знак @, типа «@Вася ты не прав!» С некоторой трансформацией этот способ прижился во многих приложениях в интернете и живет до сих пор, например, в твиттере. А в современных версиях вордпресса такое упоминание не нужно использовать.

        Теперь достаточно просто нажать на соответствующую ссылку «Ответить» и высказаться. После одобрения текста комментария он появится сразу же под комментарием, на который был написан.

        Если ваш шаблон не поддерживает такой вид комментирования, есть легкий способ добавить такую возможность:

        1. Делаем резервные копии файлов, что по идее должно уже войти в привычку
        2. Включаем вложенные комментарии в настройках Параметры→Настройки обсуждения→Разрешить древовидные комментарии
        3. Добавляем следующий код в header.php сразу же перед wp_head()
        4. Добавляем в comments.php непосредственно перед закрывающим тегом
        5. Проверяем, что