Привет, народ! Созрел я наконец написать свой первый плагин для WordPress и назвал его «CMNT ParentChanger». Так что сегодня буду рассказывать о том, зачем, почему и для чего я его создал ;)
Итак, начнем с расшифровки названия — Comment's Parent Changer — а по-русски — плагин, который позволяет управлять вложенностью комментариев. Что это такое, вы спросите? Если в настройках вашего блога на WordPress активирована опция «Включить древовидные комментарии», то вы знаете, что обсуждения могут иметь некоторую иерархию, позволяющую визуально определить последовательность ответов. Лично я сторонник данного отображения, а то иногда смотришь на большую ленту комментариев на каком-нибудь блоге и вообще не понимаешь, что в каком месте обсуждается и куда относится тот или иной ответ. Ну, в общем-то, это совсем не гуд!
В древовидных комментариях все гораздо круче! Однако у такого способа отображения есть один большой минус, некоторые комментаторы почему-то не догадываются (ленятся/просто не знают) при ответе на какой-нибудь комментарий нажать кнопочку «ответить», а просто заполняют форму комментирования и отправляют. В итоге этот комментарий становится верхнего уровня, хотя по логике был ответом на какой-то другой коммент. Знакомая ситуация?
Вот я и решил исправить эту несправедливость — сделать удобный и человекопонятный интерфейс, позволяющий быстро указывать для комментария его желаемого родителя. Функционал, я думаю, предельно просто и понятен — при редактировании комментария в соответствующем поле прописываем ID родителя и жмем сохранить, все готово, иерархия восстановлена.
Давайте приступим непосредственно к описанию и рассмотрению плагина.
- Скачиваем архив — cmntpc_v.1.0
- Распаковываем из архива файл cmntpc.php
- Закидываем файл в папку с плагинами на сервер /wp-content/plugins/
- Идем в админке в раздел «Плагины», находим «CMNT ParentChanger» и активируем:
- Затем в меню настроек находим соответствующую опцию и тыкаем...
- ...и видим следующее:
Я постарался максимально понятно внутри описать процесс работы, так что вы легко разберетесь. Даже на двух языках!
На всякий случай, для тех, кто всего боится, написал пример исполняемого запроса к базе данных MySQL. Как видите, ничего страшного не происходит: берется таблица wp_comments, ищется комментарий с номером comment_ID, а в ячейку comment_parent записывается номер родителя.
Алгоритм работы: находим у себя на блоге комментарий, который выбился из иерархии, определяем его ID и записываем в первое поле. Дальше определяем ID родительского комментария, то есть ответом на который должен стать первый коммент, и записываем во второе поле. Нажимаем «Пуск», а затем чистим кеш (если стоит кеширующий плагин). Обновляем страницу поста с комментариями и радуемся.
ВНИМАНИЕ — плагин не поддерживает перенос комментариев из одного поста в другой путем присвоения родительского ID от комментария из соседнего поста. Хотите поэкспериментировать — можете попробовать, но я бы не стал этого делать.
Может быть, эта система покажется кому-то не очень удобной, но и это я предусмотрел ;) При редактировании комментария в админке добавлено поле, позволяющее не определять ID комментария, которому надо присвоить родителя, а достаточно просто указать ID родителя:
Кстати! Указав в поле «Parent Comment ID» значение «0» можно удалить вложенность комментария, то есть родительское свойство. Комментарий станет комментарием верхнего уровня.
Теперь немного о том, как можно определить ID комментария:
- При редактировании комментария. Посмотрим в адресную строку и увидим что-то похожее:
http://site.ru/wp-admin/comment.php?action=editcomment&c=5771
- Просто скопировав ссылку непосредственно на комментарий на блоге:
http://site.ru/post/2573#comment-5771
- Нажав на кнопку «ответить», или посмотрев на ссылку, которая подсвечивается при наведении на кнопку «ответить»:
http://site.ru/post/2573?replytocom=5771#respond
- То есть в данном конкретном примере ID комментария будет 5771
Вот и все, вроде бы! Пользуйтесь на здоровье и оставляйте свои отзывы, но только правильно, с учетом иерархии ;)
Обязательно отписывайтесь о любых найденных ошибках, недочетах и багах. Буду рад любым предложениям для улучшения плагина.
Мне надоело мучатся с WordPress и я перешел на Drupal. Чего и вам советую
А я и не мучаюсь, кто вам такое сказал ;) Мне все эти колупания вкайф!
Да и WordPress имеет свою огромную аудиторию пользователей, и она вряд ли откажется от WP в пользу другого движка.
А кто вам сказал, что с drupal не будите помучатся? Настанет тот момент когда вы добрым словом вспомните старину вордпресс)
Конечно все это очень интересно и полезно, я тоже пользуюсь WordPress, кое что конечно не понятно. Но думаю что разберусь как немного времени появиться и обязательно вернусь обратно на Ваш блог, чтобы заново перечитать.
Автор, подскажите пожалуйста, а если у меня вообще перестали отображаться комментарии в последней статье, с чем это может быть связано? В Гугле и Опере их нет, а в Мозилле только видны. К остальным статьям — все на месте. Если это плагин ( у меня
WP Thread Comment), то почему только к последней статье?..
Спасибо!
Как бы я не хотел вам ответить и помочь, я не знаю, потому что с плагином WP Thread Comment дела никогда не имел.
Но, возможно, стоит обновить его, если обновления существуют.
А вообще какая у вас версия WP, что вы испольуете такой плагин, ведь уже довольно давно WP по умолчанию понимает древовидные комментарии?
Версия WP 3.2.1 У меня установлено автоматическое обновление WP. Потому как обновлять каждый раз на новую версию мне всегда страшно...
Да и дело может вовсе не в древовидных... Почему тогда в Мозилле видно?
Если речь идет про ваш блог batikom.ru, то код у вас грязноват, конечно.
Во-первых, я сейчас, используя Chrome, посмотрел последнюю запись на блоге и увидел там комментарии. Рекомендую отключить ваш странный плагин и посмотреть что будет. Если все нормально, то рекомендую впредь обходиться без него. А подстроить комментарии в дерево, если после отключения плагина они все будут одного уровня, можно с помощью моего плагина, описанного выше.
Во-вторых, рекомендовал бы почистить код, там много лишнего. Это уже мое личное мнение.
А чем не понравился плагин Move WordPress Comments от Nicolas Kuttler? Делает все то же самое, плюс позволяет переносить комментарии между постами.
Не знаю, я его не смотрел. Да и свой надежнее и понятнее ;)