publikacja: 15 grudnia 2008, 19:55; autor: Szymon Skulimowski http://wpninja.pl/artykuly/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 (51)

  1. Ravicious Ravicious 1253 dni temu:

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

    odpowiedz
  2. Gremlin Gremlin 1253 dni temu:

    Bardzo ciekawy wpis, dzięki za informacje ;)

    odpowiedz
  3. Paweł Zinkiewicz Paweł Zinkiewicz 1253 dni temu:

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

    odpowiedz
  4. Livio Livio 1253 dni temu:

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

    odpowiedz
  5. TopBlogger TopBlogger 1253 dni temu:

    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

    odpowiedz
  6. Julian Julian 1253 dni temu:

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

    odpowiedz
  7. amag amag 1253 dni temu:

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

    odpowiedz
  8. SpeX SpeX 1253 dni temu:

    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?

    odpowiedz
  9. Banny Banny 1253 dni temu:

    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

    odpowiedz
  10. Paweł Zinkiewicz Paweł Zinkiewicz 1252 dni temu:

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

    odpowiedz
  11. Szymon Skulimowski Szymon Skulimowski 1252 dni temu:

    Dzięki, już poprawiłem.

    odpowiedz
  12. haRacz haRacz 1252 dni temu:

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

    odpowiedz
  13. Paweł Zinkiewicz Paweł Zinkiewicz 1252 dni temu:

    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

    odpowiedz
  14. Piotr Sajnog Piotr Sajnog 1252 dni temu:

    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.

    odpowiedz
  15. glabek94 glabek94 1252 dni temu:

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

    odpowiedz
  16. SpeX SpeX 1252 dni temu:

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

    odpowiedz
  17. Szymon Skulimowski Szymon Skulimowski 1252 dni temu:

    @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 :-).

    odpowiedz
  18. Szymon Skulimowski Szymon Skulimowski 1252 dni temu:

    @Spex,

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

    Nie, to nie jest IntenseDebate.

    odpowiedz
  19. Grzesiek Grzesiek 1252 dni temu:

    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

    odpowiedz
  20. Custom Custom 1251 dni temu:

    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…

    odpowiedz
  21. kmh kmh 1251 dni temu:

    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 :)

    odpowiedz
  22. Szymon Skulimowski Szymon Skulimowski 1251 dni temu:

    Dzięki i proszę bardzo :-).

    odpowiedz
  23. Szymon Skulimowski Szymon Skulimowski 1251 dni temu:

    @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.

    odpowiedz
  24. Piotr Sajnog Piotr Sajnog 1250 dni temu:

    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 :)

    odpowiedz
  25. kmita kmita 1247 dni temu:

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

    odpowiedz
  26. Łukasz Więcek Łukasz Więcek 1246 dni temu:

    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!

    odpowiedz
  27. Szymon Skulimowski Szymon Skulimowski 1246 dni temu:

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

    odpowiedz
  28. Szymon Skulimowski Szymon Skulimowski 1246 dni temu:

    @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)?

    odpowiedz
  29. Damian Damian 1245 dni temu:

    @kmita
    wg mnie jest ;)

    odpowiedz
  30. kmh kmh 1245 dni temu:

    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:)

    odpowiedz
  31. kmh kmh 1245 dni temu:

    Dobra! Działa!

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

    plask

    :)

    odpowiedz
  32. Damian Damian 1245 dni temu:

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

    odpowiedz
  33. Szymon Skulimowski Szymon Skulimowski 1243 dni temu:

    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.

    odpowiedz
  34. kavillock kavillock 1238 dni temu:

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

    odpowiedz
  35. Damian Damian 1238 dni temu:

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

    odpowiedz
  36. kavillock kavillock 1237 dni temu:

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

    odpowiedz
  37. kavillock kavillock 1237 dni temu:

    ok niewarzne działa wielkie dzięki

    odpowiedz
  38. Yahó Yahó 1083 dni temu:

    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ó

    odpowiedz
  39. Nomex Nomex 1025 dni temu:

    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/

    odpowiedz
  40. Zacol Zacol 1025 dni temu:

    @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

    odpowiedz
  41. SpeX SpeX 1025 dni temu:

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

    odpowiedz
  42. Zacol Zacol 1025 dni temu:

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

    odpowiedz
  43. Nomex Nomex 1025 dni temu:

    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.

    odpowiedz
  44. Jakub Milczarek Jakub Milczarek 921 dni temu:

    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 :)

    odpowiedz
  45. wp-fun wp-fun 729 dni temu:

    fajna sprawa z tymi komentzarzami

    odpowiedz
  46. seba seba 590 dni temu:

    a w jakim pliku zamieścić punkt 3 i 4

    odpowiedz
  47. Jakub Milczarek Jakub Milczarek 590 dni temu:

    @seba - W pliku comments.php

    odpowiedz
  48. Michuu^^ Michuu^^ 484 dni temu:

    Też mam problem z pkt 4, trochę nie za bardzo rozumiem autora i nie wiem gdzie zrobić ten blok.
    http://wklej.org/hash/4d528f9f40e/

    skrypt chyba dobrze zainicjowałem?
    http://wklej.org/hash/60cf381e04d/

    Z góry dzięki za pomoc!

    odpowiedz
  49. Michuu^^ Michuu^^ 484 dni temu:

    ok, znalazłem komentarz który mi pomógł rozwiązać problem, autor mógłby zamieścić tą informację w artykule, pozdrawiam!

    odpowiedz
  50. Szymon Skulimowski Szymon Skulimowski 465 dni temu:

    Dzięki za informację. Będę tutja niedługo aktualizował system komentarzu więc jeszcze raz przelecę opisany tu proces i dodam brakujące rzeczy.

    odpowiedz
  51. zegarki zegarki 392 dni temu:

    Dzięki za podpowiedzi. Pozdrawiam

    odpowiedz

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. WordPress – dodawanie własnego, domyślnego awatara | WPNinja

    […] działa bez względu na to, czy wyświetlamy komentarze w tradycyjny sposób, czy za pomocą „nowego” systemu komentarzy. Podobał się artykuł? Dodaj kanał RSS / Atom do swojego czytnika lub zapisz się na bezpłatny […]