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):
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:
-
Dodatkowy skrypt JavaScript
W pliku
header.phpprzed wierszem z wywołaniem funkcjiwp_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. -
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 aprevious_comments_link()inext_comments_link()tworzą nawigację pomiędzy kolejnymi stronami (o ile ustawiona zostanie paginacja). -
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.
-
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.
-
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.


ocena: 4,75 / 5 | głosów: 8
Dzięki, może kiedyś u siebie to wprowadzę, o ile nie zmienię wcześniej skórki ;)
Bardzo ciekawy wpis, dzięki za informacje ;)
Jak wprowadzę to tylko dla paginacji komentów, chociaż to też na razie się nie przydaję zbytnio ;) Dzięki za tutka.
Tarski 2.4 już to ma, K2 dopiero w SVN. Użytkownicy gotowców nie muszą się martwić ;D .
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
U siebie muszę w ogóle wprowadzić system komentarzy więc ten „tutorial” mi się przyda ;)))
Dobra robota!
Dzięki za dobry tutorial! Nie wiem jak bez niego miałbym przebudować swoją skórkę :-)
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?
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
Mały błedzik (:
„W pliku header.php przed wierszem z wywołaniem funkcji wp_header()„
funkcji wp_head()
Dzięki, już poprawiłem.
Jak na razie sie nie waliduje, wiec pewnie masa ludzi bedzie czekac z wprowadzeniem tego.
http://css-tricks.com/thoughts-on-intensedebate-so-far/
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
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.
Po aktualizacji właśnie czegoś takiego szukałem. Muszę to zrobić, bo po to przerabiali system, żebym go używał. Dzięki.
To jest system już z tym przejętym sposobem komentarzy?
@Paweł,
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 :-).
@Spex,
Nie, to nie jest IntenseDebate.
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
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…
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 :)
Dzięki i proszę bardzo :-).
@Grzesiek,
Zgadza się. Można cały kod przerzucić przez
functions.phpzgodnie 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.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 :)
Pytanie, czy nowy system jest na tyle przydatny, że opłaca się grzebać w plikach ;-)
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!
Dokładnie. Z tej listy trzeba zrobić dosłownie wszystko (no, oprócz odnośników do paginacji komentarzy). :-)
@kmita,
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)?
@kmita
wg mnie jest ;)
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:
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:)
Dobra! Działa!
Wstyd się przyznać, ale z tego rozentuzjazmowania zapomniałem w opcjach WP włączyć opcję wątkowania komentarzy.
plask
:)
często jest tak, że zapomina się zrobić rzeczy najbardziej oczywistych ;)
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.
a ja niewiem jakim cudem ale mam problem a propos punktu 4-go - to bierzemy tylko znaczniki czy cały plik w to
@kavillock
wszystko co jest między … zawierasz w to
np. http://www.wklejto.pl/20901
tak jak tu ??
http://wklejto.pl/20937
ok niewarzne działa wielkie dzięki
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ó
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/
@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
Pewnie po tagach i rzutach obrazu. Ja tak przynajmniej szukam wtyczek.
@SpeX: Mimo wszystko „chiński” utrudnia sprawę… zresztą ważne, że znalazł i się podzielił ciekawą wtyczką :)
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.
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 :)
fajna sprawa z tymi komentzarzami