Saya ingin membuat bagian related post namun saya tidak ingin menggunakan plugin apapun untuk melakukannya. mengapa? Tentu saja untuk membuat performa situs lebih cepat, dong 😀

Biasanya, saya akan menggunakan tutorial WP Recipes ini untuk membuat related post: http://www.wprecipes.com/how-to-show-related-posts-without-a-plugin. Jadi sederhananya yang dilakukan adalah “mengambil” tag pertama yang dimiliki oleh post yang sedang dibuka, lalu munculkan post2 dengan tag yang sama dengan mengecualikan post yang sekarang tengah dibuka . It works well, kecuali kenyataan bahwa satu post bisa saja memiliki lebih dari satu tag.

Lalu saya googling dan ketemulah dengan halaman support WordPress ini: http://wordpress.org/support/topic/show-posts-with-same-tags-as-current-single-post idenya simple, ‘mengambil’ semua ID post tag  yang dimiliki oleh post yang sedang diakses dan menyatukannya dengan fungsi PHP array_push. tapi entah mengapa kurang bekerja dengan kurang baik. Setelah saya lihat2 sepertinya disebabkan oleh nama variabel yang tidak dibedakan.

Jadi saya tweak sedikit dan inilah hasilnya. Bekerja dengan baik, tinggal di paste di dalam loop utama di file single.php:

<?php
$tags = wp_get_post_tags($post->ID);

if ($tags) {
$alltags = array();
foreach( $tags as $tag ) {
array_push( $alltags, $tag->term_id );
}

$args=array(
'tag__in' => $alltags,
'post__not_in' => array($post->ID),
'showposts'=>4,
'caller_get_posts'=>1,
'orderby' => 'rand'
);

$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
while ($my_query->have_posts()) : $my_query->the_post(); ?>

<p><a href="<?php the_permalink(); ?>"> <?php the_title(); ?></a></p>

<?php
endwhile;
}
}
?>

4 thoughts on “WordPress: Membuat Related Post Tanpa Plugin

  1. Haha, tepuk tangan buat Textpattern karena hanya perlu sebuah tag untuk menampilkan telated post..
    <txp:related_articles />

    🙂

    1. wah, textpattern bisa sesimple itu? hihi, jadi tertarik :p

  2. kalo untuk wordpress gratisan bisa ndak ya mas ?

    1. maksudnya “WordPress gratisan” apa? 🙂

Share Your Thought