Привіт, народ! Дозрів я нарешті написати свій перший плагін для 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

Ось і все, начебто! Користуйтеся на здоров’я і залишайте свої відгуки, але тільки правильно, з урахуванням ієрархії 😉

Обов’язково отписывайтесь про будь знайдені помилки, хиби і баги. Буду радий будь-яких пропозицій для поліпшення плагіна.

З повагою, Олександр Алаєв