Вторая техническая заметка будет посвящена управлению временем… на WordPress комментариях. И снова это не про этот блог. Все заметки здесь больше для себя, для реализации далеких планов. Так что ничего подобного здесь не увидите – все только для внутренних проектов на большой посещаемости.
Про общение
Итак, очень хочется, чтобы наши страницы комментировали. Где есть люди, где есть общение, где есть свое ядро и самому жить как-то приятнее. Но вот люди трындец как не любят общаться на сайтах – подавай им чатики и ВКонтактики.
Можно конечно полностью менять деятельность и вести аудиторию больших проектов там, но что делать с малыми? Их же как-то надо взращивать, на край увеличивать поведенческие факторы. И тут, если ваш сайт не откровенное ГМО, самое время обратить внимание на 2 фактора:
- Наличие призывов писать комментарии, задавать вопросы и делиться своим мнением прямиков в тексте – без этого все работает, но лишним не будет.
- Самостоятельное написание первых комментариев.
Нет, люди сразу не ринутся ничего писать. Они вообще к вам не за тем пришли – у них свои проблемы, а тут на их пути встречаетесь вы со своим ламповым клубом.
Как итог – писать не будут, но шансы увеличит.
Проблема
А далее что-то запарились мы с трастом этих самых липовых комментариев. Рядом с ними стояла дата и время:
И вот представьте – публикуется статья, к ней сразу же пишется с десяток комментариев на лету, что аж начинает ругаться антиспам Вордпресса (да, у него и такое есть). А в итоге – все комментарии в одну дату и с периодичностью в 1 минуту. Подозрительно, правда? А нужно ведь натурально.
Решения
Что можно сделать:
- Не писать комментарии – не наш вариант.
- Писать комментарии постепенно – можно, но работа на конвейере всегда быстрее. Отложенные действия требуют лишних времяресурсов. На большом масштабе не наш вариант.
- Написать программу для отложенных комментариев – можно, но не захотелось.
- Править даты – в ВП по умолчанию такого нет. Можно написать свой плагин, но тоже время на правки. Можно править через базу данных – но тоже костыли, и требует времени.
- Можно отключить дату и время – можно и так. Тем более темы многие это поддерживают. Но тут встает дилемма – будут ли на комментарии без даты отвечать пользователи (скорее всего будут, не проверял), и как к этому будут относиться поисковики – все-таки какие-то обновления на сайте, да еще если обернуть в семантику <time>, то и тем паче напрашивается логика оставлять. Но тут на любителя – удалить и не париться тоже будет классным решением.
- Оставить дату, удалить время – вот такое решение понравилось больше всего. На новые статьи мы все равно делаем пролив, и в первый день всегда наваливается много комментариев. А в другие дни, если уж пошли люди из поиска, все выглядит вполне логично.
Как удалить время?
Итого задача сводится к удалению времени из комментариев на WP, но сохранению даты. Вроде бы просто. Но не тут-то было. Стандартные комментарии определяются классом Walker…
Итого нужно:
- Переопределить Walker.
- Изменить в нем формат вывода.
- На страницах добавить вместо стандартного свой обработчик.
Технически это будет выглядеть примерно так:
Шаг 1. В function.php создаем свой обработчик Walker или callback.
Шаг 2. Выводим его на нужной странице вместо стандартного – т.е. заменяем в коде исходные функции вывода на свои.
Walker
<?php
wp_list_comments( array(
‘walker’ => new Walker_Comment()
) );
Callback
<?php wp_list_comments(‘type=comment&callback=format_comment’); ?>
И мы это сделали… а потом натянули другую тему и поняли, что а чего мы парились-то.
Как удалить время – тема Root?
А все дело в том, что была натянута тема Root. А там все это сделали за нас.
Дату и время целиком удалить совсем просто:
Блоки и расположение – Комментарии – Удалить дату в комментариях
Со временем придется немного поколдовать, но и здесь нет особых проблем. Коллбэк уже был переопределен и его смело можно править в файлах темы (у кого дочерние – переносим на дочерние темы).
/wp-content/themes/root/inc/comments.php
Все расположено в 111 строке. Меняем на свой нужный формат:
<time class=»comment-time» itemprop=»datePublished» datetime=»<?php comment_date(‘Y-m-d’) ?>»><?php comment_date(‘d.m.Y’) ?></time>
Все!