wpDiscuz – lepsze komentarze w WordPressie

wpDiscuz

Wbudowany moduł komentarzy WordPressa nie jest jakoś szczególnie zaawansowany. Z tego też powodu powstało wiele zewnętrznych narzędzi do obsługi dyskusji pod wpisami, takich jak Disqus czy Livefyre. Nie brakuje też wtyczek próbujących usprawnić domyślne WordPressowe komentarze, a odpowiedni moduł znajdziemy również w Jetpacku.

Szukając sposobu na zaoferowanie czytelnikom wygodnego narzędzia do prowadzenia dyskusji warto przyjrzeć się darmowej wtyczce wpDiscuz, która jest najbardziej kompleksowym rozszerzeniem usprawniającym oferowany przez WordPressa moduł komentarzy.

Czym jest wpDiscuz?

Gdybym miał jednym zdaniem opisać wpDiscuz, to nazwałbym go odpowiednikiem Disqus, tyle że działającym na naszym serwerze. Wtyczka niemal całkowicie zastępuje domyślne komentarze WordPressa – nowy jest formularz dodawania komentarza oraz widok dyskusji. Jednocześnie jednak wszystkie komentarze są przechowywane w standardowy sposób, tak więc po usunięciu wtyczki wciąż będą one znajdowały się w naszej bazie danych i będą widoczne na naszej stronie. To zdecydowany plus, szczególnie dla osób, które z jakiegoś powodu nie chcą przechowywać komentarzy na zewnętrznych serwerach należących do firm trzecich.

Co oferuje wpDiscuz?

wpDiscuz dodaje praktycznie wszystkie przydatne funkcje, których brakuje w module komentarzy WordPressa, a które są oferowane przez zewnętrzne usługi. Przede wszystkim dodawanie komentarzy jest realizowane za pośrednictwem AJAXa, dzięki czemu strona nie przeładowuje się.

Przydatną funkcją jest możliwość oceniana komentarzy za pomocą ikonek z kciukiem skierowanym w górę i w dół. Obok każdego komentarza jest wyświetlana suma ocen, a dodatkowo mamy możliwość sortowania komentarzy według ich oceny.

Skoro już jestem przy sortowaniu, to warto wspomnieć, że wpDiscuz pozwala na szybką zmianę sposobu sortowania komentarzy. Możemy uszeregować wypowiedzi według daty publikacji (zaczynając od najnowszych lub najstarszych) oraz według ich oceny. Oczywiście zmiana kolejności wyświetlania komentarzy odbywa się bez przeładowywania całej strony.

Warto także wspomnieć, że wtyczka automatycznie zamienia adresy URL na linki, a także pozwala na osadzanie obrazków w treści komentarzy (wystarczy wkleić adres URL obrazka).

wpDiscuz - nowy komentarz

Formularz dodawania komentarza przez osobę niezalogowaną został w znaczący sposób zmodyfikowany. Anonimowy komentator ma możliwość włączenia powiadomień e-mail o nowych komentarzach do wpisu lub o nowych odpowiedziach na jego komentarz. Można również włączyć kod zabezpieczający formularz przez botami (CAPTCHA). Formularz dodawania komentarza przez zalogowanego użytkownika wygląda o wiele prościej – zawiera tylko pole do wpisania treści. Całość przypomina moduł komentarzy oferowany przez wtyczkę Jetpack, ale jest nieco bardziej rozbudowana.

wpDiscuz udoskonala również domyślne stronicowanie komentarzy, ładując kolejną porcję wpisów za pomocą AJAXa po kliknięciu przycisku lub automatycznie po przewinięciu strony.

wpDiscuz - komentarz

Bardzo ciekawą (ale wymagającą odrobiny ostrożności) funkcją wpDiscuz jest Live Update. Po jej włączeniu (domyślnie nie jest aktywna) użytkownik, który ma otwartą w przeglądarce stronę wpisu, będzie otrzymywał powiadomienia o nowych komentarzach (takie jak na zamieszczonym wyżej zrzucie ekranu). Podobny mechanizm oferuje między innymi Disqus i generalnie bardzo dobrze się to sprawdza. Problem w tym, że funkcja ta może być zabójcza dla naszego serwera, szczególnie jeśli naszą stronę przegląda jednocześnie wiele osób, a my włączymy Live Update również dla osób niezalogowanych (których zwykle jest najwięcej). Dlatego też po aktywowaniu tej funkcji należy obserwować obciążenie serwera, tak aby nasza firma hostingowa nie zablokowała nam strony (jeśli korzystamy z hostingu współdzielonego). Warto również poświęcić chwilę na konfigurację, za pomocą której możemy zmniejszyć nieco obciążenie generowane przez Live Update.

Konfiguracja wpDiscuz

Panel konfiguracyjny wtyczki można znaleźć w sekcji Komentarze → wpDiscuz Settings. Nie będę opisywał wszystkich dostępnych opcji, bo jest ich sporo, a ponieważ są one (jako tako) przetłumaczone, to zrozumienie ich działania nie powinno sprawiać większych problemów.

wpDiscuz - ustawienia

W sekcji Ustawienia ogólne znajdziemy kilka opcji, które wymagają krótkiego wyjaśnienia.
Z pozoru mało użyteczną opcją jest możliwość włączenia lub wyłączenia komentarzy dla wybranych typów wpisów. Może się to jednak okazać przydatne w sytuacji, w której różne typy wpisów korzystają z tego samego szablonu (np. z ogólnego szablonu single.php).
Ciekawą funkcją jest również możliwość konfiguracji mechanizmu przechowywania danych wpisanych przez niezalogowanych użytkowników (imię i nazwisko, adres e-mail i adres URL strony). Służy do tego opcja Keep guest commenter credentials in browser cookies for x days. Ustawienie jej wartości na -1 spowoduje, że dane zostaną zapisane „na zawsze” (ciasteczko nigdy nie wygaśnie); wartość 0 spowoduje natomiast, że dane znikną wraz z zamknięciem okna przeglądarki.
Wtyczka oferuje również kilka opcji związanych z długością komentarzy. Można ustawić minimalną i maksymalną liczbę słów komentarza, a także liczbę słów, po której komentarz zostanie „ucięty” i wyświetlony zostanie link Czytaj więcej.
Bardzo przydatną funkcją jest możliwość edycji komentarza przez autora przez określony czas po publikacji (domyślnie jest to 15 minut). Opcjonalnie można również przekierować osoby, które opublikowały właśnie swój pierwszy komentarz, na wybraną stronę, na przykład z regulaminem naszego serwisu.

Dwie kolejne sekcje ustawień wtyczki nie wymagają komentarza. Sekcja Pokaż/ukryj składniki pozwala na włączanie i wyłączanie różnych funkcji wtyczki. Sekcja Tło i kolory pozwala natomiast na dostosowanie kolorystyki formularza dodawania komentarza oraz listy opublikowanych komentarzy.

Na koniec zostawiłem sekcję Live Update, która (jak już wcześniej wspomniałem) jest ważna z uwagi na problemy z wydajnością, jakie może spowodować ta funkcja. Funkcja może działać na dwa sposoby: Zawsze sprawdź nowe komentarze i pokaż przyciski aktualizacji lub Zawsze sprawdź nowe komentarze i automatycznie aktualizuj. Osobiście sugeruję pierwszą opcję, w której użytkownikowi zostaną wyświetlone przyciski pozwalające na załadowanie nowych komentarzy, dzięki czemu łatwiej będzie mógł zorientować się, co nowego pojawiło się w dyskusji. Poza tym druga opcja może być nieco bardziej obciążająca dla przeglądarki (ale nie dla serwera).

Włączenie opcji Wyłącz Live Update dla gości ma sens tylko wtedy, gdy na naszej stronie udostępniamy możliwość rejestracji i logowania. Zwykle jednak nie dajemy odwiedzającym takiej opcji, w związku z czym większość z nich nie jest zalogowana. Jeśli jednak naszą stronę przegląda w tym samym czasie wiele osób, to musimy się liczyć z tym, że funkcja Live Update może znacząco obciążyć nasz serwer. Skrypt sprawdza bowiem co określony czas, czy w przeglądanym właśnie wpisie nie pojawiły się jakieś nowe komentarze, a każde takie sprawdzenie oznacza jedno żądanie do serwera i kilka zapytań do bazy danych.

Tym sposobem przechodzimy do opcji Zaktualizuj listę komentarzy co, która pozwala na określenie, co jaki czas funkcja będzie sprawdzać nowe komentarze. Domyślnie jest to 30 sekund, co jest wartością z jednej strony dużą (użytkownik otrzymuje informację o nowych komentarzach co pół minuty, czyli dość rzadko), a z drugiej stosunkowo niewielką (na przykład 100 użytkowników na stronie wygeneruje w ten sposób w ciągu minuty około 200 żądań do serwera, co daje ponad 3 żądania na sekundę). Minimalny możliwy do ustawienia czas to 10 sekund, co będzie bardzo wygodne dla odwiedzających naszą stronę, ale może się skończyć tragicznie dla serwera. Tu niestety konieczne będą samodzielne eksperymenty, ponieważ w grę wchodzi zarówno liczba osób przeglądających w danym momencie naszą stronę, jak i wydajność naszego serwera oraz samej strony (używane wtyczki i motyw).

Na koniec warto dodać, że wpDiscuz obsługuje kilka wtyczek do logowania za pośrednictwem serwisów społecznościowych (sekcja Logowanie społecznościowe), a także łatwo integruje się z wtyczką BuddyPress oraz kilkoma rozszerzeniami do budowy profili użytkowników (Users UltraUser ProUltimate Member).

Bezpośredni link