Erhan Yakut Software Developer @Binalyze | Founder @Passwall | Golang Enthusiast | Open Sorcerer

WordPress’te Eklenti Kullanmadan Benzer Yazıları Gösterin

1 min read

WordPress günlüklerimiz için her ihtiyacımıza yönelik birer eklenti mevcut fakat bazen eklentisiz bir şekilde, saf WordPress fonksiyonlarıyla işleri yürütmek daha mantıklı olabiliyor. Buna bir örnek de yazılarımızın sonunda o yazıya benzeyen diğer yazıları eklentisiz bir şekilde göstermektir. Bunu yapmanın iki yolu var. Birincisi benzerliği etiketlere göre, ikincisi ise benzerliği kategorilere göre belirlemek.

Etiketlere Göre Benzerlik

Yazmış olduğumuz yazıyla aynı etikete/etiketlere sahip benzer yazıları göstermek için aşağıdaki kodu kullanabilirsiniz. Bu kodu temanızın single.php dosyasında döngünün içine yazmalısınız.
[php]<?php
$tags = wp_get_post_tags($post->ID);
if ($tags) {
$tag_ids = array();
foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id;

$args=array(
‘tag__in’ => $tag_ids,
‘post__not_in’ => array($post->ID),
‘showposts’=>5, // Gösterilecek benzer yazı sayısı
‘caller_get_posts’=>1
);

$my_query = new wp_query($args);
if( $my_query->have_posts() ) {
echo ‘<h3>Benzer yazılar</h3><ul>’;
while ($my_query->have_posts()) {
$my_query->the_post();
?>
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
<?php
}
echo ‘</ul>’;
}
wp_reset_query();
}
?>[/php]

Kategoriye Göre Benzerlik

Bu koda göre yazımızla aynı kategorideki yazılardan seçim yapılarak benzer yazılar gösterilir. Kod yine single.php dosyasına yazılmalıdır.
[php]<?php
$categories = get_the_category($post->ID);
if ($categories) {
$category_ids = array();
foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id;

$args=array(
‘category__in’ => $category_ids,
‘post__not_in’ => array($post->ID),
‘showposts’=>5, // Gösterilecek benzer yazı sayısı
‘caller_get_posts’=>1
);

$my_query = new wp_query($args);
if( $my_query->have_posts() ) {
echo ‘<h3>Benzer yazılar</h3><ul>’;
while ($my_query->have_posts()) {
$my_query->the_post();
?>
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
<?php
}
echo ‘</ul>’;
}
wp_reset_query();
}
?>[/php]

Not 1: Eğer bu konuda daha gelişmiş bir yöntemi tercih ederim, eklenti olsa da olur derseniz size kesinlikle YARPP (Yet Another Related Posts Plugin) eklentisini tavsiye ederim.

Not 2: Bu yazıyı yazalı aslında çok oldu ancak yazıda belirtilenleri yeniden kullanma gereği hissedince yazının tarihini güncellemenin faydalı olabileceğini düşündüm. 3 yıllık yazının hala geçerliliğini koruduğunu görmek güzel ;)

Kaynak: Bin-Blog

Erhan Yakut Software Developer @Binalyze | Founder @Passwall | Golang Enthusiast | Open Sorcerer