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.

Tagi artykułu:

×

Interesujesz się WordPressem?

Polub nas na Facebooku, będziesz na bieżąco!

facebook