publikacja: 15 grudnia 2008, 19:55; autor: Szymon Skulimowski http://wpninja.pl/wordpress-2-7-nowy-system-komentarzy/

WordPress 2.7: Nowy system komentarzy

WordPress 2.7: Nowy system komentarzy

Jedną z ciekawych nowości w WordPress 2.7 jest dosyć mocno przebudowany system wyświetlania komentarzy. Dzięki niemu mamy jeszcze większą kontrolę nad funkcjonowaniem tego jakże ważnego elementu naszego bloga.

Jeśli jesteś ciekawy co oferuje nowy system komentarzy oraz w jaki sposób go uruchomić to, trafiłeś we właściwe miejsce.

Parę słów na temat nowego systemu komentarzy

Nowy system zawiera w sobie sporo funkcjonalności, które do tej pory można było osiągnąć jedynie poprzez aktywację odpowiednich wtyczek. Zaliczają się do nich m.in:

  • grupowanie w wątki
    wraz z ustawieniem maksymalnego poziomu zagnieżdżenia
  • dzielenie na strony
    wraz z ustawieniem ilości, po której następuje paginacja
  • kolejność wyświetlania
    od najnowszego do najstarszego komentarza lub odwrotnie
  • automatyczne zamykanie
    wraz z ustawieniem ilości dni, po których nastąpi zamknięcie

Plusem jest fakt, że wszystkimi ustawieniami można swobodnie zarządzać z poziomu panela administratora (zakładka ustawienia / dyskusja):

wordpress-27-nowy-system-komentarzy-01

Zarządzanie systemem w panelu administracyjnym

Aby jednak móc z nowego systemu skorzystać trzeba nieco pogrzebać w bebechach skórki. Niestety stare skórki nie będą pozwalały na takie „bajery”.

Wdrażanie nowego systemu komentarzy

Proces wdrożenia polega na drobnej edycji pliku header.php i praktycznie całkowitej przebudowie pliku comments.php. Oba znajdują się w katalogu aktualnie używanej skórki (.../wp-content/themes/nazwa-skórki/). Wysoce zalecane jest wykonanie kopii bezpieczeństwa obu plików.

Sam proces wygląda następująco:

  1. Dodatkowy skrypt JavaScript

    W pliku header.php przed wierszem z wywołaniem funkcji wp_head() dodajemy następujący ciąg:

    <?php wp_enqueue_script( 'comment-reply' ); ?>

    Funkcja ta załaduje odpowiedni skrypt JavaScript, który odpowiedzialny jest za obsługę przemieszczania formularza pomiędzy komentarzami.

    Reszta kroków wykonywana jest na pliku comments.php.

  2. Nowa funkcja wyświetlająca komentarze

    Podmieniamy stary kod służący do wyświetlania komentarzy:

    <ol class="commentlist">
    <?php foreach ($comments as $comment) : ?>
    <li <?php echo $oddcomment; ?>id="comment-<?php comment_ID() ?>">
    // (...)
    </li>
    // (...)
    <?php endforeach;?>
    </ol>

    na następujący:

    <ol class="commentlist">
    <?php wp_list_comments(); ?>
    </ol>
    <?php previous_comments_link() ?>
    <?php next_comments_link() ?>

    Funkcja wp_list_comments() generuje cały kod komentarza a previous_comments_link()next_comments_link() tworzą nawigację pomiędzy kolejnymi stronami (o ile ustawiona zostanie paginacja).

  3. Dodatkowe ukryte pola w formularzu

    Pomiędzy znacznikami <form></form> zamieniamy linię:

    <input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />

    na następującą:

    <?php comment_id_fields(); ?>

    Jest to nowa funkcja, która dodaje dwa ukryte pola formularza (m.in. to które zastąpiliśmy). Służą one do identyfikacji zagnieżdżenia.

  4. Dodatkowy blok o id=„respond”

    Cały formularz otaczamy blokiem o identyfikatorze „respond”:

    <div id="respond">
    <h3>Dodaj komentarz</h3>
    // (...) - tutaj m.in. formularz
    </div>

    Pozwala to JavaScriptowi na przemieszczanie formularza pomiędzy komentarzami.

  5. Odnośnik „anuluj odpowiedź”

    W dowolnym miejscu bloku „respond” dodajemy następującą funkcję:

    <?php cancel_comment_reply_link() ?>

    Funkcja ta tworzy odnośnik „Anuluj odpowiedź w tym miejscu”, który przenosi cały formularz w pierwotne miejsce.

Wystarczy teraz zalogować się do panelu administratora i w zakładce ustawienia / dyskusja skonfigurować system według naszych potrzeb.

Stylowanie nowego systemu komentarzy

Po wdrozeniu nowego systemu okazać się może, że aspekt wizualny uległ znaczącemu pogorszeniu. Niestety, nowy system oznacza nowe stylowanie za pomocą CSS. Zainteresowanych tematem odsyłam do artykułu Damiana Sochackiego.

Komentarze (45)

  1. Ravicious (15 grudnia 2008, 20:01) #:

    Dzięki, może kiedyś u siebie to wprowadzę, o ile nie zmienię wcześniej skórki ;)

  2. Gremlin (15 grudnia 2008, 20:12) #:

    Bardzo ciekawy wpis, dzięki za informacje ;)

  3. Paweł Zinkiewicz (15 grudnia 2008, 20:39) #:

    Jak wprowadzę to tylko dla paginacji komentów, chociaż to też na razie się nie przydaję zbytnio ;) Dzięki za tutka.

  4. Livio (15 grudnia 2008, 20:41) #:

    Tarski 2.4 już to ma, K2 dopiero w SVN. Użytkownicy gotowców nie muszą się martwić ;D .

  5. TopBlogger (15 grudnia 2008, 21:36) #:

    Dzięki Ci dobry człowieku za tutka, zaoszczędziłeś mi godzinę wertowania opisów. Mogłeś jeszcze dopisać jak zrobić, by system był kompatybilny z dowolną wersją wordpressa, ale to już by kompletnie rozleniwiło ;).

    A tak całkowicie bezinteresownie: Ikonki social bookmarking już są :). Może boks autora pojawiłby się pod wpisem zamiast w sidebar, chodzi o rozpoznawalność autora wpisu (ja przynajmniej już się raz złapałem na przypisywanie autorstwa komuś innemu) i o działanie tuż po przeczytaniu wpisu. Dodatkowo przydałaby się opcja podejrzenia wszystkich artykułów jednego autora (link). Możnaby wtedy jeszcze dodać listę „inne wpisy autora”, ale to już luksus. :D

  6. Julian (15 grudnia 2008, 22:09) #:

    U siebie muszę w ogóle wprowadzić system komentarzy więc ten „tutorial” mi się przyda ;)))
    Dobra robota!

  7. amag (15 grudnia 2008, 22:56) #:

    Dzięki za dobry tutorial! Nie wiem jak bez niego miałbym przebudować swoją skórkę :-)

  8. SpeX (15 grudnia 2008, 23:39) #:

    A można jakieś przykłady (np video) jak działa ten nowy system komentarzy?
    Jak rozpoznać czy gotowiec spełnia wymagania WP2.7 jeśli chodzi o komentarze?

  9. Banny (15 grudnia 2008, 23:51) #:

    Próbowałam, ale mi nie wyszło, więc na razie powróciłam do „staroci”… Może to nie mój czas… :P

  10. Paweł Zinkiewicz (16 grudnia 2008, 10:21) #:

    Mały błedzik (:
    „W pliku header.php przed wierszem z wywołaniem funkcji wp_header()„
    funkcji wp_head()

  11. Szymon Skulimowski (16 grudnia 2008, 10:25) #:

    Dzięki, już poprawiłem.

  12. haRacz (16 grudnia 2008, 10:30) #:

    Jak na razie sie nie waliduje, wiec pewnie masa ludzi bedzie czekac z wprowadzeniem tego.
    http://css-tricks.com/thoughts-on-intensedebate-so-far/

  13. Paweł Zinkiewicz (16 grudnia 2008, 12:00) #:

    W zasadzie to po co upraszczali to wszystko do wp_list_comments skoro trzeba się teraz jeszcze bardziej namęczyć niż wcześniej żeby ostylować komentarze. Niech spadają :P

    dla zainteresowanych http://codex.wordpress.org/Template_Tags/wp_list_comments

  14. Piotr Sajnog (16 grudnia 2008, 12:34) #:

    Właśnie. Proponuję następny artykuł poświęcić na przykład ostylowania komentarzy w css. Z technicznego punktu widzenia działa mi wszystko ok, ale zrobił się straszny bałagan jeśli chodzi o wygląd.

  15. glabek94 (16 grudnia 2008, 14:21) #:

    Po aktualizacji właśnie czegoś takiego szukałem. Muszę to zrobić, bo po to przerabiali system, żebym go używał. Dzięki.

  16. SpeX (16 grudnia 2008, 15:16) #:

    To jest system już z tym przejętym sposobem komentarzy?

  17. Szymon Skulimowski (16 grudnia 2008, 16:09) #:

    @Paweł,

    W zasadzie to po co upraszczali to wszystko do wp_list_comments skoro trzeba się teraz jeszcze bardziej namęczyć niż wcześniej żeby ostylować komentarze …

    Zgadzam się. I właśnie dlatego nie jestem zbytnim zwolennikiem tego nowego rozwiązania. Przynajmniej do póki nie zrobią porządnej dokumentacji i dodatkowych parametrów :-).

  18. Szymon Skulimowski (16 grudnia 2008, 16:10) #:

    @Spex,

    To jest system już z tym przejętym sposobem komentarzy?

    Nie, to nie jest IntenseDebate.

  19. Grzesiek (16 grudnia 2008, 21:38) #:

    hmmm… nowy system ma wieksze mozliwosci ale trudniej jest dostosowac go do niestandardowego markup-u, ktory wiele ludzi ma w szablonie komentarzy - np ja u siebie mam co prawda liste ale wewnatrz kazdego elementu sa jeszcze dodatkowe divy i inne pierdoly :)

    ale z tego co czytam wystarczy napisac funkcje, wrzucic w nia nasz html/css i podpiac ja jako parametr callback do wp_list_comments

  20. Custom (17 grudnia 2008, 5:53) #:

    Jak zawsze - poradnik szczegółowy i jakże pomocny. Dlatego przypomnę i siebie :P

    Proszę o artykuł, jak zrobić, aby avatary które wyświetlają się komentarzach w panelu admina były wyświetlane także na stronie z komentarzami pod wpisem w skórce, która takiej funkcji nie posiada…

  21. kmh (17 grudnia 2008, 19:41) #:

    Dzięki, zrobiłeś to czytelniej niż wcześniejsze poradniki jakie czytałem, więc jak tylko znajdę chwilę czasu posiedzę nad tym i w razie czego przybiegnę z płaczem po pomoc :)

  22. Szymon Skulimowski (17 grudnia 2008, 19:44) #:

    Dzięki i proszę bardzo :-).

  23. Szymon Skulimowski (17 grudnia 2008, 19:46) #:

    @Grzesiek,

    ale z tego co czytam wystarczy napisac funkcje, wrzucic w nia nasz html/css i podpiac ja jako parametr callback do wp_list_comments

    Zgadza się. Można cały kod przerzucić przez functions.php zgodnie z tym co piszą na wiki WordPressa. Jest to jednak sposób wysoce niezalecany ze względu na możliwą niekompatybilność z późniejszymi wydaniami.

  24. Piotr Sajnog (18 grudnia 2008, 22:31) #:

    Polecam świetny wpis na temat ostylowania komentarzy:

    http://damek.eu/wordpress-27-system-komentarzy/

    Skorzystałem z niego u siebie i działa pięknie :)

  25. kmita (22 grudnia 2008, 0:38) #:

    Pytanie, czy nowy system jest na tyle przydatny, że opłaca się grzebać w plikach ;-)

  26. Łukasz Więcek (22 grudnia 2008, 7:29) #:

    Walczyłem ładnych kilka godzin z wdrożeniem tego systemu u siebie. Cały czas miałem problem z odpowiadaniem na komentarze - po kliknięciu „odpowiedz” strona się przeładowywała, a formularz i tak pozostawał na swoim miejscu (ale odpowiedzi dodawały się prawidłowo). I nie zgadniecie w czym był problem ;) Nie miałem po prostu w kodzie wrzuconego linku „anuluj odpowiedź” - i przez to wysypywał się JS ;)

    Tak piszę to dla potomnych, jak by ktoś miał podobny problem.
    Pozdrawiam!

  27. Szymon Skulimowski (22 grudnia 2008, 8:10) #:

    Dokładnie. Z tej listy trzeba zrobić dosłownie wszystko (no, oprócz odnośników do paginacji komentarzy). :-)

  28. Szymon Skulimowski (22 grudnia 2008, 9:10) #:

    @kmita,

    Pytanie, czy nowy system jest na tyle przydatny, że opłaca się grzebać w plikach ;-)

    Na to pytanie musisz już sobie sam odpowiedzieć - czy to są potrzebne te wszystkie nowe bajery (krótką listę znaleźć można na początku tego artykułu)?

  29. Damian (23 grudnia 2008, 13:24) #:

    @kmita
    wg mnie jest ;)

  30. kmh (23 grudnia 2008, 20:25) #:

    Dobra, wydawało mi się, że jednak zrobiłem wszystko tak jak trzeba, jednakże wychodzi na to, że nie - strona się nie rozsypała (to plus), jednakże nie widać nigdzie linka do „reply” (to minus). Podjąłem się szalonego zadania zrobienia skórki na podstawie Sandboxa:
    http://www.plaintxt.org/themes/sandbox/#download
    Bo chcę mieć potem kontrole nad wszystkim.

    Niemniej mój header.php wygląda tak:

    „php wp_enqueue_script( ‘comment-reply’ ); „
    „php wp_head() // For plugins ”

    z nawiasami oczywiście odpowiednio trójkątnymi zamiast cudzysłowów

    comments.php nie będę wklejał, bo to już za dużo atrakcji:)

  31. kmh (23 grudnia 2008, 20:38) #:

    Dobra! Działa!

    Wstyd się przyznać, ale z tego rozentuzjazmowania zapomniałem w opcjach WP włączyć opcję wątkowania komentarzy.

    plask

    :)

  32. Damian (24 grudnia 2008, 0:13) #:

    często jest tak, że zapomina się zrobić rzeczy najbardziej oczywistych ;)

  33. Szymon Skulimowski (25 grudnia 2008, 11:52) #:

    Na wszelki wypadek dodałem dodatkową informację o tym żeby uaktywnić jeszcze opcje w panelu administracyjnym. Dodałem także odnośnik do artykułu Damiana dotyczącego stylowania.

  34. kavillock (30 grudnia 2008, 15:59) #:

    a ja niewiem jakim cudem ale mam problem a propos punktu 4-go - to bierzemy tylko znaczniki czy cały plik w to

  35. Damian (30 grudnia 2008, 21:47) #:

    @kavillock
    wszystko co jest między … zawierasz w to
    np. http://www.wklejto.pl/20901

  36. kavillock (31 grudnia 2008, 9:22) #:

    tak jak tu ??
    http://wklejto.pl/20937

  37. kavillock (31 grudnia 2008, 9:27) #:

    ok niewarzne działa wielkie dzięki

  38. Yahó (4 czerwca 2009, 0:37) #:

    Ja miałem taki problem (pracuje na WP2.7.1stary szablon)chciałem mieć na swojej stronce koniecznie avatory do tego wgrałem plugin z tej stronki http://www.marcocimmino.net/cimy-wordpress-plugins/cimy-user-extra-fields/,zdj lecz to nie rozwiązało mojego problemu avatory nadal nie były widoczne na mojej stronie dlatego z zapytaniem ruszyłem do WPNinja :)
    w pliku comments.php (w moim szablonie) wgrałem taki kodzik jaki mi polecił a mianowicie
    lecz trochę go zmodyfikowałem pod swój szablon i odrazu myślę że większość będzie wiedziała gdzie znajduję już się ta pętla bo wchodząc w plik comments.php nie odrazu wiedziałem gdzie ona się znajduje!:)
    <?php echo ”.get_avatar( $comment, $size = ‘50’, $default = ” ).”; ?>By on <a href=”#comment-” title=””>

    p.s
    polecam ten plugin Cimy User Extra Fields bardzo przydatny jeżeli chodzi o wgrywanie własnych plików .jpg link do niego w mojej wypowiedzi pozdrawiam Yahó

  39. Nomex (31 lipca 2009, 21:54) #:

    Cały dzień walczyłem z tym kodem aby zadziałał na moim portalu. Praktycznie wszystko udało się zrobić jednak z moimi wcześniejszymi modyfikacjami w kodzie strony nie spełniał moich oczekiwań.
    Zacząłem szukać jakieś wtyczki która byłaby alternatywą dla dzielenia komentarzy aż w końcu po 6 próbach trafiłem.

    Temat jest dość stary ale może komuś się przyda ta informacja i wtyczka: http://wordpress.org/extend/plugins/wp-paged-comments/

  40. Zacol (31 lipca 2009, 23:05) #:

    @Nomex: Póki co nie mam aż tylu komentarzy by dzielić je na strony, ale wtyczka ciekawa. Można by rzec, że to wp-pagenavi tylko dla komentarzy. BTW, jak ty to znalazłeś jak tam opis po „chińsku” ;p

  41. SpeX (31 lipca 2009, 23:16) #:

    Pewnie po tagach i rzutach obrazu. Ja tak przynajmniej szukam wtyczek.

  42. Zacol (31 lipca 2009, 23:52) #:

    @SpeX: Mimo wszystko „chiński” utrudnia sprawę… zresztą ważne, że znalazł i się podzielił ciekawą wtyczką :)

  43. Nomex (1 sierpnia 2009, 0:28) #:

    W wyszukiwarce Pluginów wpisałem słowa Page i Comments później przejrzałem chyba ze 100 wtyczek z czego wybrałem 6 wspomnianych w tytule których pojawiały się te wyrazy.
    Tak jak pisze SpeX pomogło Screenshots i translate google ;)
    Przetestowałem wszystkie wtyczki na portalu i tylko ta nie spowodowała błędów.

  44. Jakub Milczarek (12 listopada 2009, 21:19) #:

    Bardzo dobra porada! Właśnie wprowadziłem również u siebie to nowe formatowanie komentarzy.
    Mam tylko jedną uwagę:
    W linijce: brakuje ‘;’ po nawiasach… Właśnie spędziłem dobrych kilka minut w sprawdzaniu dlaczego po dodaniu komentarza ładuje mi się blank page „wp-comments-post.php”. A to brak tylko jednego małego średnika :)

  45. wp-fun (23 maja 2010, 16:40) #:

    fajna sprawa z tymi komentzarzami

Dodaj własny komentarz

Odnośniki z innych stron (6)

Lista innych stron, które w jakiś sposób odnoszą się do opublikowanej tutaj treści:

  1. glabek94.pdg.pl » Nowiuśki WordPress 2.7

    […] Ulepszono także system komenatrzy - teraz możliwe jest odpowiadanie na wybrane z nich i dzielenie na podstrony. Można także odpowiadać na nie wprost z Administracji. Stare skórki (lub jak kto woli: laye) są kompatybilne z nowym systemem, ale nie w pełni. Niestety nie działa na nich wyczekiwany nowy system komentarzy. Są 2 rozwiązania: albo dalej korzystać z jakiejś wtyczki lub pogrzebać trochę w kodzie źródłowym, pousuwać niepotrzebne fragmenty i pododawać te, które umozliwią cytowanie etc. Nie jest to może bardzo trudne, ale samemu praktycznie nic się nie da zrobić, więc polecam dokładną instrukcją z blogu WPNinja - WordPress 2.7: Nowy system komentarzy. […]

  2. damek.eu » WordPress 2.7 - System komentarzy

    […] Oczywiście pierwszą rzeczą jaką musimy zrobić to osadzić nowy system komentarzy w naszej skórce do wordpressa. Jak to zrobić dowiecie się na blogu WPNinja. Zapraszam.  […]

  3. Krótkie podsumowanie: grudzień 2008

    […] WordPress 2.7: Nowy system komentarzy Krótkie przedstawienie zalet nowego systemu komentarzy, który pojawił się wraz z WordPressem 2.7 oraz rzeczowa instrukcja wdrożenia. […]

  4. Co najbardziej podoba Ci się w nowym WordPressie (2.7)?

    […] system wyświetlania komentarzy, […]

  5. Grupowanie komentarzy w wątki w WordPress | Jakub Milczarek

    […] pierwsze kroki zostały bardzo dobrze opisane na stronie WPNinja we wpisie: WordPress 2.7: Nowy system komentarzy. Dodam tylko, że w punkcie  5. Odnośnik „anuluj odpowiedź” powinno być: <?php […]

  6. Dodawanie własnego, domyślnego awatara

    […] bez względu na to, czy wyświetlamy komentarze w tradycyjny sposób, czy za pomocą „nowego” systemu komentarzy. Podobał się artykuł? Dołącz do grona stałych czytelników […]