WordPress, oldukça gelişmiş bir yorum sistemi ile birlikte gelir. WordPress temamıza, bir yorum sistemi dahil etmek için en uygun yol, comments.php dosyası ile bir şablon parçası oluşturmak ve bu şablon parçasını, uygun gördüğümüz bir şablonda, comments_template() fonksiyonu ile çağırmaktır.
Yorum sistemi şablonu, single.php ve türevlerinde veya page.php ve türevlerinde çalışır. Yani tek yazı sayfalarında veya sayfa türü içeriklerimizde çalışır.
Yorumları, dilediğiniz yazı ve sayfalarda kapatabilir, yorum sayınız belli bir sayıyı aştığında, bu yorumları sayfalayabilir, yorum metinleri için yasaklı kelimeler belirleyebilir, yorum yapanlar için üyelik şartı getirebilir ve bunlara benzer daha bir çok kontrolü sağlayabilirsiniz. Bütün bu kontroller, yönetim panelinizde, Ayarlar->Tartışma sayfasında bulunmaktadır.
Aşağıda, Twenty Sixteen temasına ait, comments.php şablonu, açıklamalı olarak verilmiştir:
<?php
/**
* Yorumları yayınlamak için hazırlanmış şablondur.
*
* Sayfanızda, hem daha önce yapılmış yorumların hem de
* yorum yapmak için kullanılan formun olduğu kısımdır.
*
* @package WordPress
* @subpackage Twenty_Sixteen
* @since Twenty Sixteen 1.0
*/
/*
* Eğer ekrandaki yazı bir parala ile korunuyorsa ve
* ziyaretçi henüz paralayı girmemiş ise
* hemen sayfayı yüklemeyi durduruyoruz.
*/
if ( post_password_required() ) {
return;
}
?>
<div id="comments" class="comments-area">
<?php if ( have_comments() ) : ?>
<h2 class="comments-title">
<?php
$comments_number = get_comments_number();
if ( '1' === $comments_number ) {
/* translators: %s: post title */
printf( _x( '“%s” ile ilgili bir yorum', 'comments title', 'twentysixteen' ), get_the_title() );
} else {
printf(
/* tercümanlar: %1$s: yorumların sayısı, %2$s: yazı başlığı */
_nx(
'“%2$s” ile ilgili %1$s yorum',
'“%2$s” ile ilgili %1$s yorum',
$comments_number,
'comments title',
'twentysixteen'
),
number_format_i18n( $comments_number ),
get_the_title()
);
}
?>
</h2>
<?php
// Yorumlar için önceki/sonraki sayfa şeklinde bir sayfalama
the_comments_navigation();
?>
<!-- Eski yorumları listeliyoruz -->
<ol class="comment-list">
<?php
wp_list_comments(array(
'style' => 'ol',
'short_ping' => true,
'avatar_size' => 42,
));
?>
</ol><!-- .comment-list -->
<?php
// Yorumlar için önceki/sonraki sayfa şeklinde bir sayfalama
the_comments_navigation();
?>
<?php endif; // have_comments() kontrolünün sonu, yani yorum varsa çalışacak kısmın sonu ?>
<?php
// Eğer yorumlar kapalı ise ve yapılmış yorumlar da varsa bir not düşelim
if ( ! comments_open() && get_comments_number() && post_type_supports( get_post_type(), 'comments' ) ) :
?>
<p class="no-comments"><?php _e( 'Yorumlar kapalı.', 'twentysixteen' ); ?></p>
<?php endif; ?>
<?php
// Yorum yapmak isteyenler için form
comment_form(
array(
'title_reply_before' => '<h2 id="reply-title" class="comment-reply-title">',
'title_reply_after' => '</h2>',
));
?>
</div><!-- .comments-area -->
Bu şablonu daha yakından inceleyecek olursak, öncelikle;
if ( post_password_required() ) {
return;
}
kodu ile, ekrandaki yazı veya sayfa için, bir parola denetimi yapıyoruz. Çünkü, WordPress ile istediğimiz bir yazı ya da sayfaya parola koruması koyabiliyoruz.
<?php if ( have_comments() ) : ?>
Yukarıdaki ifade ise, ekrandaki içerik için, yorum yapılıp yapılmadığını test eden bir koşullu ifadedir.
Ekrandaki içerik için yapılan yorum sayısı, get_comments_number() fonksiyonu ile öğrenilir. Eğer, yorumların sayısı, sayfalama kriteri için belitilen sayıyı aştı ise, the_comments_navigation() fonksiyonu bunu algılar ve yorumlar için bir sayfalama şablonu ekler. Daha önce yapılmış yorumları listelemek için, wp_list_comments() fonksiyonu kullanılır. Bir yorum formu oluşturmak için ise, comment_form() fonksiyonu kullanılır.
Yukarıda gördüğünüz şablon, yorumlar için, yönetim panelinin, Ayarlar->Tartışma sayfasında yaptığınız ayarları da otomatik olarak algılayacaktır.
Bedirhan says:
teşekkürler
Ertuğrul says:
Çok teşekkürler, Web sitem olan LAYERWEB‘de kullanıcağım.