Komentarze w WordPressie – Problem z Disqus
W WordPressie możemy korzystać z wbudowanego mechanizmu do obsługi komentarzy naszych postów, lub z zewnętrznego systemu. Disqus to chyba najpopularniejszy system komentarzy, który jest dostępny między innymi dla WordPressa. Jednak kilkukrotnie już spotkałem się w szablonach z problemem dotyczącym linków do komentarzy – linki po prostu nie działają.
Problem z linkami i wtyczką Disqus
Problem dotyczy szablonów WordPressa, które wykorzystują funkcję comments_popup_link(), dużo szablonów korzysta z tej metody, niestety do tej pory Disqus wciąż nie rozwiązał tego problemu.
Standardowe linki w komentarzach WordPressa prowadzą do bloków #comments oraz #respond, natomiast w przypadku Disqusa, odnośnik powinien mieć zawsze adres #disqus_thread – i tutaj pojawia się problem linki nie działają – nie są zamieniane na #disqus_thread.
Możliwe rozwiązania
Linki #comments oraz #respond pochodzą z kodu źródłoweg WordPressa a jak powszechnie wiadomo, zmiana kodu źródłowego WordPressa jest zawsze złym rozwiązaniem :), trochę lepszym rozwiązaniem jest zmiana w kodzie wtyczki – w tym celu należy otworzyć plik wp-content/plugins/disqus-comments-system/comments.php i doddać te dwie linijki kodu zaraz na początku pliku (linie 6,7)
<a name="comments"></a> <a name="respond"></a>
Dzięki temu linki będą działać poprawnie, jednak po każdej aktualizacji Disqusa, trzeba pamiętać o ponownym dodaniu tego kodu.
Lepszym rozwiązaniem jest modyfikacja plików szablonu, otwieramy plik z funkcją comments_popup_link(…) – najczęściej jest to plik single.php lub content.php (może to być również każdy inny plik z tą funkcją, która wywoływana jest w treści wpisów, w szablonach opartych na frameworku GavernWP jest to plik helpers.layout.fragments), funkcja powinna wyglądać mniej więcej tak:
<?php if ( comments_open() ) : ?> <div class="comments-link"> <?php comments_popup_link( '<span class="leave-reply">' . __( 'Leave a reply', 'twentytwelve' ) . '</span>', __( '1 Reply', 'twentytwelve' ), __( '% Replies', 'twentytwelve' ) ); ?> </div> <?php endif; ?>
Dodajemy link do Disqusa – #disqus_thread
<?php if ( comments_open() ) : ?> <div class="comments-link"> <a href="#disqus_thread"><?php comments_number( __( '<span>0</span> REPLY', 'twentytwelve' ), __( '<span>1</span> REPLIES', 'twentytwelve' ), __( '<span>%</span> REPLIES', 'twentytwelve' ) ); ?></a> </div> <?php endif; ?>
Teraz linki do komentarzy Disqus powinny działać poprawnie, wydaję mi się, że jest to najlepsze rozwiązanie, do głowy przychodzi mi jeszcze skrypt JS, który będzie zamieniał w locie linki #comments na #disqus_thread. Jeśli spotkałeś się z tym problem i masz jakieś własne rozwiązania/przemyślenia na ten temat, koniecznie podziel się tym w komentarzach.
Dodajemy własny shortcode (Facebook LikeBox) do motywu WordPressa. Modernizr – biblioteka, która wykryje obsługę CSS3 i HTML5 w Twojej przeglądarce.