Собственное оформление комментариев в WordPress

Владимир | | PHP, Web дизайн, WordPress.

Вы, конечно, знаете, что новые версии WordPress поддерживают древовидные комментарии.

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

В идеале разработчик темы WordPress должен использовать только параметры функции wp_list_comments (выводит список комментариев) и CSS стили.

Но идеальных вещей не существует в природе и WordPress – не исключение 🙂

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

Например.

После имени комментатора выводится слово says:, которое нельзя изменить с помощью параметров wp_list_comments. Хотя, текст ссылки Reply можно изменить с помощью этой функции

wp_list_comments(array('reply_text'=>'Ответить'));

Вывод даты имеет фиксированный формат, что-то вроде сентября 7, 2009 at 9:29 am

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

Проблема заключается в том, что эти настройки прописаны в файле wp-includes/comment-templates.php. Т.е. если мы внесем в него изменения, они будут перезаписаны после очередного обновления движка, которые, кстати, появляются довольно часто.

Кстати, строка 1226 в файле wp-includes/comment-templates.php выглядит так:

<?php printf(__('<cite class="fn">%s</cite> <span class="says">says:</span>'), get_comment_author_link()) ?>

Видите, мы может изменить оформление слова says: (с помощью CSS класса says), но не можем изменить сам текст.

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

1) В файле comments.php вашей темы в параметре callback функции wp_list_comments указываем имя функции, которую нужно использовать для вывода комментариев.

wp_list_comments('type=comment&callback=mytheme_comment');

В данном случае это mytheme_comment.

2) Создаем саму функцию. Она должна находиться в файл functions.php вашей темы.

Заново писать всю функцию целиком нет никакого смысла (разве что вы хотите сделать что-то неповторимое 🙂 ). Лучше использовать готовый шаблон

Он полностью совпадает со стандартным выводом комментариев в WP.
Теперь можно немного его подправить.

Примечание. Почитать о форматировании дат можно здесь.

У меня получилось примерно следующее.

Строка с форматами даты и времени.

<div class="comment-meta commentmetadata"><a href="<?php echo htmlspecialchars( get_comment_link( $comment->comment_ID ) ) ?>"><?php printf(__('%1$s в %2$s'), get_comment_date('j F Y'),  get_comment_time('G:i')) ?></a><?php edit_comment_link(__('(Edit)'),'  ','') ?></div>

Слово says: я просто удалил.

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

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

В общем, тщательно тестируйте все ваши нововведения.

Удачи!

Интересно почитать

Разработка сайтов в Минске. Студия веб-дизайна в Минске.