Предыстория написания этой статьи — типична: решила я выделить свои комментарии отдельным стилем… Благо, уже не первый день кромсаю style.php и основные правила синтаксиса CSS мне известны. И, конечно, эта невинная затея обернулась небольшим конфузом, поисками решения… В финале все удалось. А теперь я хочу рассказать вам, какие магические пассы я применила для украшения собственных комментов.
Смысл всех манипуляций, которые описаны далее — выделить ваши комментарии и ответы читателям. Если не переборщить со стилями, то получится вполне элегантно. Конечно, это не жизненная необходимость. Тот, кто решил просмотреть ваши комментарии — смогут это сделать по нику. Но идея красоты — тоже важна для многих блоггеров.
К тому же, если обратить внимание, как оформлены ответы автора на многих крупных и продуманных сайтах (например, smashingmagazine) — мы увидим отдельный стиль для них. Очевидно, это поможет улучшить юзабилити.
Особенно важно применение отдельного стиля для комментов автора на блогах, где разрешены древовидные комментарии с достаточно глубокой степенью вложенности. Говоря проще, где пользователь может отвечать на комментарии, отвечать на ответы и так далее.
Посмотрим стили комментов, которые уже используются
Не удивляйтесь, что я предлагаю, как бы, начать с конца. Но для пользователей, которые не вполне свободно себя чувствуют в редактировании тем Вордпресс — это наиболее наглядный и явный путь.
Итак, выберите на своем блоге пост, к которому оставлены комментарии. Конечно, нужно, чтобы были здесь и ваши ответы. Открыв такую страницу, кликните по ней правой кнопкой мыши и выберите «Просмотр кода страницы» (в браузерах Гугл Хром и Файерфокс — точно есть такая возможность).
Не пугайтесь, увидев простыню кода. На самом деле, ничего сложного и тайного тут нет. Прокручивайте страницу вниз и заметите, что сначала выводятся общие сведения о посте, потом его текст с форматированием. Ниже, наконец, будет код, относящийся к комментариям. Можете просто набрать Ctrl+F , в появившемся окошке ввести commentlist и нажать Enter — вас сразу «перебросит» на нужную строку, где искомое слово будет ярко подсвечено.
Теперь смотрим, как размечены стили наших комментариев. Для наглядности код из моей темы. Конечно, у вас он может выглядеть и быть структурирован чуть иначе, но основной смысл отдельных частей кода должен быть понятен:
ТЕКСТ КОММЕНТА
- id="li-comment-">
$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/
Понятно, что на этих страницах разными будут только комментарии. Что еще больше ухудшает общую картину — каждый комментарий имеет свою собственную уникальную ссылку с временем публикации, что еще добавляет пачку дублей. Поэтому поисковый бот обнаружит один и тот же контент под огромным количеством разнообразных ссылок.
Чтобы избежать дублирования, есть несколько решений:
- Не использовать постраничные комментарии
- Использовать мета-теги для создания канонических урл для каждой записи
- Использовать плагин
Если ваш сайт супер-популярный или собирается таким стать, то конечно лучше использовать канонические урлы. Если же бурные обсуждения не планируются, то проще использовать традиционные простынки комментариев без разбития на страницы.
SEO for Paged Comments применяет еще более радикальный способ — убирая содержимое записи с страниц комментариев и заменяя на цитату или урезанную версию записи.
Реализуем вложенные комментарии
Вложенные древовидные комментарии позволяют посетителям писать ответ выбранному существующему комментарию, создавая развернутое обсуждение диалог. После активации этой возможности в настройках, возле каждого комментария появится ссылка «Ответить», позволяющая высказаться по конкретному комментарию.
До появления такой возможности существовал стиль ответа выбранному автору, используя в тексте комментария его имя и знак @, типа «@Вася ты не прав!» С некоторой трансформацией этот способ прижился во многих приложениях в интернете и живет до сих пор, например, в твиттере. А в современных версиях вордпресса такое упоминание не нужно использовать.
Теперь достаточно просто нажать на соответствующую ссылку «Ответить» и высказаться. После одобрения текста комментария он появится сразу же под комментарием, на который был написан.
Если ваш шаблон не поддерживает такой вид комментирования, есть легкий способ добавить такую возможность:
- Делаем резервные копии файлов, что по идее должно уже войти в привычку
- Включаем вложенные комментарии в настройках Параметры→Настройки обсуждения→Разрешить древовидные комментарии
- Добавляем следующий код в header.php сразу же перед wp_head()
- Добавляем в comments.php непосредственно перед закрывающим тегом
- Проверяем, что
- Проверяем, что форма комментариев заключена в с атрибутом id="respond"
- Добавляем ссылку отмены комментария прямо перед формой комментариев
- В comments.php заменяем старый цикл на обновленный
Ну и собственно все 🙂 Традиционно есть триллион различных способов, чтобы настроить и переделать под свои нужды, но суть, я думаю, вы уловили. Останется только не забыть настроить стили для вложенных комментариев
Commentlist li.depth-1 {} .commentlist li.depth-2 {} .commentlist li.depth-3 {}
Разделяем комментарии, пингбеки и трекбеки
При отображении откликов на вашу публикацию, эффективным способом уменьшить беспорядок будет организация раздельного отображения комментариев и пингов. Это не только не будет прерывать последовательность обсуждений, но и позволит акцентировать больше внимания именно на комментариях.
Это один из самых старых трюков и есть много способов его воплотить, вот вам пример простого разделения путем применения параметров wp_list_comments():
Комментарии
Pingbacks/Trackbacks
Правда у этого кода есть недостаток — заголовки будут выводиться даже если комментариев или пингов нет. Будет лучше использовать несколько улучшенный вариант:
Комментарии
Trackbacks/Pingbacks
Во время отображения пингбеков выводится ссылка с куском текста вокруг нее, взятым с ссылающегося сайта. Этот сниппет может быть различного размера и сложно его контролировать, т.к. заранее не известно, что там будет выведено. К счастью, можно очистить отображение этого текста, выводя лишь только аккуратный список ссылок. Для этого нужно в functions.php добавить
Function cleanPings($comment, $args, $depth) { $GLOBALS["comment"] = $comment; echo "
- ".comment_author_link()."
";}А затем добавить требуемый callback параметр в вызов функции комментариев
Уничтожаем пингбеки и трекбеки
Нельзя запретить людям ссылаться на ваш сайт, но можно не отображать трекбеки и пингбеки на них. Изначально, как впрочем и многое другое в интернете, пингбеки придумывались для хороших целей — информирование о том, что кто-то на вас сослался. И сейчас еще кое-кто продолжает их использовать и выводить. Но вот технология трекбеков полностью дискредитировала себя из-за массового спама, поэтому будет лучше их отключить.
Отключаем отображение пингов из админки
Для этого в настройках Обсуждения убираем галочки с опции Разрешить оповещения с других блогов . Это полностью отключает функционал пингбеков и трекбеков, однако для отдельно выбранной записи можно включить эту возможность в настройках.
Исключаем пинги из комментариев
Используем параметр для функции wp_list_comments(), разрешая только вывод комментариев
Удаляем wp-trackback.php
Это очень простой и эффективный способ — физическое удаление файла wp-trackback.php из корневой директории вордпресса. Это абсолютно безопасный способ, но файл восстанавливается после апгрейда вордпресс и его нужно будет удалить заново.
Отключаем с помощью плагинов
Это можно сделать с помощью плагина
Сам по себе плагин очень простой и состоит всего из одного файла, поэтому его содержимое можно просто скопировать и вставить в файл functions.php
Class DisableTrackbacks { function DisableTrackbacks() {add_action("pings_open", array(&$this, "pings_open"));} function pings_open($open) {return ("1" == get_query_var("tb")) ? FALSE: $open;} } add_action("plugins_loaded", create_function("", "global $DisableTrackbacks; $DisableTrackbacks = new DisableTrackbacks();"));
После размещения, функция DisableTrackbacks уничтожает все трекбеки. А пингбеки остаются.
Контролируем комментарии непосредственно в базе данных
Вордпресс предлагает несколько способов контроля над тем, открыта ли запись для комментирования или нет. В админке можно полностью запретить на всем сайте оставлять комментарии к будущим записям. Также в отдельно взятой записи в редакторе можно выбрать в блоке Обсуждения будет ли к ней открыто комментирование или нет.
Но прямо над этими способами находится плагин , позволяющий все старые комментарии по истечении заданного срока скрывать, отправляя на модерацию. И без всяких плагинов включатьотключать комментирование можно простыми запросами к базе данных.
Глобально разрешаем пинги для всех пользователей
UPDATE wp_posts SET ping_status = "open";
Глобально запрещаем пинги для всех пользователей
UPDATE wp_posts SET ping_status = "closed";
Глобально запрещаем пинги до определенной даты публикации
UPDATE wp_posts SET ping_status = "closed" WHERE post_date < "2009-09-09" AND post_status = "publish";
Такие запросы позволяют периодически проводить чистку. А вот пример запросов для глобального разрешения или запретов комментирования
UPDATE wp_posts SET comment_status = "open", ping_status = "open" WHERE comment_status = "closed" AND post_status = "publish";
Комментарии в PHP аналогичны комментариям, которые используются в HTML. В синтаксисе PHP комментарий начинаются всегда с особой последовательностью символов и весь текст, который появляется между этих спецсимволов, будет проигнорирован интерпретатором.
В HTML основная цель комментария в том, чтобы служить в качестве примечания разработчикам, которые могут просматривать исходный код вашего сайта. Комментарии РНР отличаются тем, что они не будут отображаться для посетителей. Единственный способ посмотреть PHP комментарии это открыть файл для редактирования. Это делает PHP комментарии полезными только для PHP — программистов.В случае, если вы забыли или не знали, как делаются комментарии в HTML, то смотрите пример ниже.
Синтаксис php комментариев: однострочный комментарий
Тогда как в html есть только один вид комментариев, в PHP имеется целых два типа. Первый тип, который мы будем обсуждать, это однострочный комментарий. То есть комментарий, который говорит интерпретатору игнорировать все, что происходит на этой линии справа от комментариев. Для использования этого комментария следует применять символы «//» или «#» и весь текст справа будет игнорироваться интерпретатором PHP.
Psst...You can"t see my PHP comments!"; // echo "nothing"; // echo "My name is Humperdinkle!"; # echo "I don"t do anything either"; ?>
Результат:
Hello World! Psst...You can"t see my PHP comments!
Обратите внимание на то, что несколько наших команд echo не были обработаны, потому что мы закомментировали их с помощью специальных символов комментирования. Этот тип комментариев часто используется для быстрой записи о сложном и запутанном коде или чтобы временно удалить строку кода PHP (для отладки).
Синтаксис php комментариев: многострочный комментарий
Как и HTML — комментарии, многострочные комментарии в PHP могут быть использованы для комментирования больших блоков кода или для записи комментов в несколько строк. Многострочные комментарии в PHP начинается с «/*» и заканчиваются «*/». Все, что находится между этими символами, будет игнорироваться.
Результат.
Собственно, нам нужно найти только комменты с вашим ником (например, на этом блоге я пишу и отвечаю под ником Katyaru). И чуть выше нужная строка, которая начинается так:
Спасибо, у вас супер сайт!