Membuat template file komentar di WordPress

Dengan template file komentar Anda bisa menampilkan komentar di tema Anda berdasarkan template file c

Apa itu template file komentar?

Dengan template file komentar Anda bisa menampilkan komentar di tema Anda berdasarkan template file comments.php dan pengaturan.

Template file comments.php berisi semua logika yang diperlukan untuk menarik komentar dari database dan menampilkannya kepada pengguna, dan template file comments.php termasuk template tag pada WordPress.

Looping pada komentar

Untuk menarik komentar dari database dan menampilkanya kepada pengguna, Anda harus melooping sebuah kode ditemplate file comments.php:

<?php
//Get only the approved comments
$args = array(
    'status' => 'approve'
);
 
// The comment Query
$comments_query = new WP_Comment_Query;
$comments = $comments_query->query( $args );
 
// Comment Loop
if ( $comments ) {
    foreach ( $comments as $comment ) {
        echo '<p>' . $comment->comment_content . '</p>';
    }
} else {
    echo 'Tidak ada komentar yang ditemukan.';
}

Contoh Comments.php

Berikut contoh dari template file comments.php pada tema Twenty Thirteen:

<?php
/**
 * The template for displaying Comments.
 *
 * The area of the page that contains comments and the comment form.
 *
 * @package WordPress
 * @subpackage Twenty_Thirteen
 * @since Twenty Thirteen 1.0
 */
 
/*
 * If the current post is protected by a password and the visitor has not yet
 * entered the password we will return early without loading the comments.
 */
if ( post_password_required() )
    return;
?>
 
<div id="comments" class="comments-area">
 
    <?php if ( have_comments() ) : ?>
        <h2 class="comments-title">
            <?php
                printf( _nx( 'One thought on "%2$s"', '%1$s thoughts on "%2$s"', get_comments_number(), 'comments title', 'twentythirteen' ),
                    number_format_i18n( get_comments_number() ), '<span>' . get_the_title() . '</span>' );
            ?>
        </h2>
 
        <ol class="comment-list">
            <?php
                wp_list_comments( array(
                    'style'       => 'ol',
                    'short_ping'  => true,
                    'avatar_size' => 74,
                ) );
            ?>
        </ol><!-- .comment-list -->
 
        <?php
            // Are there comments to navigate through?
            if ( get_comment_pages_count() > 1 && get_option( 'page_comments' ) ) :
        ?>
        <nav class="navigation comment-navigation" role="navigation">
            <h1 class="screen-reader-text section-heading"><?php _e( 'Comment navigation', 'twentythirteen' ); ?></h1>
            <div class="nav-previous"><?php previous_comments_link( __( '&larr; Older Comments', 'twentythirteen' ) ); ?></div>
            <div class="nav-next"><?php next_comments_link( __( 'Newer Comments &rarr;', 'twentythirteen' ) ); ?></div>
        </nav><!-- .comment-navigation -->
        <?php endif; // Check for comment navigation ?>
 
        <?php if ( ! comments_open() && get_comments_number() ) : ?>
        <p class="no-comments"><?php _e( 'Comments are closed.' , 'twentythirteen' ); ?></p>
        <?php endif; ?>
 
    <?php endif; // have_comments() ?>
 
    <?php comment_form(); ?>
 
</div><!-- #comments -->

Memecah template comments.php

Agar lebih mudah memahami setiap baris kode, kita akan memecah menjadi potongan-potongan kecil setiap source code. Berikut daftar potongannya:

  1. Header komentar
  2. Judul Komentar
  3. Daftar Komentar
  4. Paginasi Komentar
  5. Pesan tertutup pada komentar
  6. Akhir dari komentar

Setiap daftar potongan tersebut akan dibahas pada subbagian dibawah.

Header komentar

<?php
/**
 * The template for displaying Comments.
 *
 * The area of the page that contains comments and the comment form.
 *
 * @package WordPress
 * @subpackage Twenty_Thirteen
 * @since Twenty Thirteen 1.0
 */

Pada header bagian atas Anda bisa melihat komentar pada bahasa pemograman php yang berisi informasi didalamnya, Anda bisa membaca lebih lengkap Standar Dokumentasi PHP.

/*
 * If the current post is protected by a password and the visitor has not yet
 * entered the password we will return early without loading the comments.
 */
if ( post_password_required() )
 return;
?>

Selanjutnya, ada tes untuk pengecekan logika apakah posting dilindungi kata sandi dan, jika demikian, template tidak akan menampilkan komentar.

Judul komentar

<h2 class="comments-title">
    <?php
        printf( _nx( 'One thought on "%2$s"', '%1$s thoughts on "%2$s"', get_comments_number(), 'comments title', 'twentythirteen' ),
            number_format_i18n( get_comments_number() ), '<span>' . get_the_title() . '</span>' );
    ?>
</h2>

Biasanya pada template komentar terdaftar judul untuk mencetak header yang muncul di atas komentar.

Informasi: Menggunakan fungsi terjemahan _nx() sehingga pengembang lain dapat memberikan terjemahan bahasa alternatif.

Daftar komentar

<ol class="comment-list">
    <?php
        wp_list_comments( array(
            'style'       => 'ol',
            'short_ping'  => true,
            'avatar_size' => 74,
        ) );
    ?>
</ol><!-- .comment-list -->

Pada bagian ini Anda bisa menampilkan daftar komentar dengan menggunakan fungsi wp_list_comments() dan memberikan argumentasi didalamnya sesuai dengan kebutuhan Anda.

Paginasi Komentar

Jika Anda memiliki banyak komentar dan membuatnya menjadi panjang, maka Anda bisa memotongnya menjadi beberapa halaman dengan menambahkan paginasi komentar.

Sebenarnya ini tidak wajib, jika Anda menggunakan paginasi pada komentar, maka ada sejumlah manfaat seperti:

  • Meningkat kecepatan pemuatan halaman
  • Membuatnya menjadi lebih rapih

Mengaktifkan paginasi komentar dilakukan dalam dua langkah:

  1. Aktifkan komentar dihalaman dengan membuka Pengaturan > Diskusi , dan centang kotak “Pisahkan komentar menjadi halaman “. Anda dapat memasukkan nomor apa pun untuk “komentar tingkat atas per halaman “.
  2. Buka template file comments.php Anda dan tambahkan baris berikut di mana Anda ingin menampilkan pagination komentar.
<?php
    // Are there comments to navigate through?
    if ( get_comment_pages_count() > 1 && get_option( 'page_comments' ) ) :
?>
<nav class="navigation comment-navigation" role="navigation">
    <h3 class="screen-reader-text section-heading"><?php _e( 'Comment navigation', 'twentythirteen' ); ?></h3>
    <div class="nav-previous"><?php previous_comments_link( __( '&larr; Older Comments', 'twentythirteen' ) ); ?></div>
    <div class="nav-next"><?php next_comments_link( __( 'Newer Comments &rarr;', 'twentythirteen' ) ); ?></div>
</nav><!-- .comment-navigation -->
<?php endif; // Check for comment navigation ?>

Pesan tertutup pada komentar

<?php if ( ! comments_open() && get_comments_number() ) : ?>
<p class="no-comments"><?php _e( 'Comments are closed.' , 'twentythirteen' ); ?></p>
<?php endif; ?>

Ada dimana penulis menutup komentar dengan alasan tertentu dan jika itu benar, maka praktik terbaik kita harus memberikan informasi kepada pengunjung bahwa komentar ditutup.

Akhir dari komentar

    <?php endif; // have_comments() ?>
 
    <?php comment_form(); ?>
 
</div><!-- #comments -->

Bagian ini mengakhiri potongan-potongan komentar looping, menyertakan formulir komentar, dan menutup pembungkus komentar.

Template komentar alternatif 

Pada beberapa kesempatan Anda mungkin ingin menampilkan komentar Anda secara berbeda dalam tema Anda. Untuk itu, Anda akan membuat file alternatif sebagai contoh tes-comments.php dan masukan kode berikut:

<?php comments_template( '/tes-comments.php' ); ?> 

Alamat path file yang digunakan harus sama sesuai dengan direktori root tema Anda, dan termasuk subfolder apa pun. Jadi jika template komentar kustom ada di folder custom-templates, maka pemanggilan file kurang lebih seperti ini:

<?php comments_template( '/custom-templates/tes-comments.php' ); ?>