WordPress’te İlgili Konuları Eklentisiz Listeleme

WordPress  İlgili KonularWordPress için “ilgili konular” bölümü hazırlamak gayet basit, özellikle etiketlemelerinizi özenle yapıyorsanız.

Bu makalemizde sizlere ilgili konular alanını birkaç satır PHP koduyla, bir eklentiye ihtiyaç duymaksızın nasıl yapacağınızı anlatacağız.

Günümüzde WordPress için bu işi yapan onlarca eklenti (plugin) mevcut. Hatta geçtiğimiz yıl yayınladığımız 2012 Yılının En Popüler WordPress Eklentileri isimli makalemizde ilgili konuları listelememizi sağlayan eklentilerden bir tanesini tanıtmıştık sizlere.

Makalemizin devamında ise eklentilerden kaçınmak için birkaç geçerli sebep sunacağız.

İlgili konular

Hazırlayacağımız “ilgili konular” çalışması etiketler üzerinden çalışmaktadır. Görüntülenen yazının içerdiği etiketlere sahip veya benzer etiketleri kullanan içerikleri listeler.

Fakat asıl ilginizi çekecek şey ilgili konular alanının sitenize sağlayacağı avantajlardır.

İlgili konular sayesinde

  1. Google‘dan sadece bir makale için gelen ziyaretçi ilgili bulduğu konuya yönelerek sitenizde geçirdiği zamanı arttırır.
  2. Takipçileriniz okuduğu konuda yeterince bilgiye erişemediyse ilgili konularınıza yönelerek yelpazesini genişletebilir.
  3. Google botları makalelerin altındaki ilgili konular öğelerini indeksler ve içerisinde bulunan bağlantıları site haritası olarak algılar. Bu da web sayfanızın indekslenme hızını arttırırken SEO kalitenizi de yükseltir.

Bu liste uzatılabilir. Şimdi biraz da neden eklenti kullanmadığımızı konuşalım.

Eklenti niye kullanmıyoruz?

WordPress eklentilerini kullanmamamız için birçok sebep var. En büyük sebep kontrol edilebilirlikleri az. Özellikle eklentinin yönetim paneli yoksa.

Ayrıca eklentiler birçok jQuery ve CSS tanımlamasını sitemize dahil eder. Bu tanımlamaların bir çoğu gereksizdir ve sayfa açılış hızını, beraberinde SEO değerimizi düşürür.

Bu yüzden birkaç satır kod yazarak hazırlayabileceğimiz işlemleri eklentilere tercih etmeliyiz. İlgili konular alanı da bunlara örnek.

Israrla eklenti kullanmak isterseniz ilgili konular alanı için sizlere Yet Another Related Posts Plugin eklentisini önerebiliriz.

Nasıl hazırlanır?

Yazıların yanlarına küçük görseller (thumbnail) ekleyerek işleme başlayacağız. Fakat bütün yazılarda thumbnail kullandığınızı varsayarak bu işlem için küçük bir çözümleme yapacağız.

Hazırlayacağımız kod sayesinde thumbnail eklenmemiş yazıların içerisindeki ilk yazılar listelenecek. Eğer içerisinde hiç görsel yoksa tanımlayacağımız resim döngüye dahil olacak. Gayet iyi değil mi?

Bu da ilginizi çekebilir  WordPress'e Eklentisiz Yazar Bilgi Kutusu

Yazı görseli (thumbnail) ekleme

Eğer Functions.php‘de aşağıdaki tanımlama yoksa ekleyelim.

add_theme_support( 'post-thumbnails' ); 

Ayrıca bu satırın altına boyut belirlemesi de yapabilirsiniz.

set_post_thumbnail_size( 150, 150, true ); 

Veya WordPress’in yönetim panelinden Ayarlar > Ortam alanına giderek “Küçük resim boyutu” kısmı için bir boyut belirleyiniz.

Şimdi de thumbnail olmadığında konulardaki ilk görseli çeken, hiç görsel olmadığında da ayarlanmış resmin gözükmesini sağlayan kullanışlı yazılımı ekleyelim. Yine Function.php’ye, yukarıdaki kodların altına bir yere eklemekte fayda var.

function resmi_getir() {
global $post, $posts; /* Tarayacağımız alanı belirliyoruz*/
$first_img = '';
ob_start();
ob_end_clean();
$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
$first_img = $matches [1] [0]; /* Üstte filtrelediğimiz metinden url'yi çekiyoruz */

if(empty($first_img)){ /*Eğer konuda görsel yoksa aşağıdaki varsayılan görseli kullan*/
$first_img = "thumbnail-yok.jpg";
}
return $first_img;
}

İşlem tamam. Şimdi listelemeyi oluşturalım!

Şimdi single.php‘yi veya ilgili konular alanını göstermek istediğimiz herhangi bir dosyayı açıyoruz ve aşağıdaki satırları ekliyoruz.

<?php
$gecici_tanimlama=$post; global $post;
$etiketler = wp_get_post_tags($post->ID);

if ($etiketler){
$etiket_id = array();
foreach($etiketler as $etiket) $etiket_id[] = $etiket->term_id;
$args=array(
'tag__in' => $etiket_id,
'post__not_in' => array($post->ID),
'posts_per_page'=>20,
'caller_get_posts'=>1,
'orderby'=>'rand'
);

$my_query = new wp_query( $args );
while( $my_query->have_posts() ) {$my_query->the_post(); ?>
<li><?php if ( has_post_thumbnail() ) {the_post_thumbnail('thumbnail');}else{echo '<img src="'.resmi_getir().'">';}?><?php the_title(); ?></li>
<?php
}
}
$post = $gecici_tanimlama;
wp_reset_query();
?>

Böylece işlemimiz tamamlanıyor. Yukarıdaki kodu biraz tanıyalım.

  • Geçici tanımlama yaparak işlemin site hızını düşürmesini, isimlendirmenin WordPress’in varsayılan isimlendirmeleriyle karışmasını engelliyoruz.
  • posts_per_page satırına listelemek istediğiniz konu sayısını belirtin.
  • orderby alanına listeleme şeklinizi girin. Name(konu ismine göre), date(tarihe göre), rand(rasgele) listelemenizi sağlar. Tüm liste için Codex desteğine buradan erişebilirsiniz.

Sonuç / Kapanış

Son günlerde WordPress’te eklenti kullanmadan yapabileceğiniz birçok işlemi konu aldık. Bugün de eklenti kullanmadan ilgili konular alanı oluşturduk. Üstteki kodlamayı CSS ile süsleyerek gayet güzel sonuçlar elde edebilirsiniz.

WordPress  İlgili Konular



  • ekrem

    hocam benim bir temam var..yazılara en son eklenen yazıları ekliyor. ben istiyorum ki sadece yazı hangi kategorideyse, o kategoriye en son eklenen yazıları göstersin. ama hangi yazıya girersen gir, siteye en son eklenen yazıları gösteriyor. single.php’deki kodlara baktım şöyle:

    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’=>6, // Gösterilecek benzer yazı sayısı
    ‘caller_get_posts’=>1,
    //’orderby’ => ‘rand’
    ‘orderby’ => ‘desc’
    );
    $my_query = new wp_query($args);
    if( $my_query->have_posts() ) {
    echo ‘

    …devamı var tabi. ama bunlar önemli diye sadece bunları yapıştırıyorum…

    şimdi burada anlamadığım şey, orderby’da hem rand var hem desc. bunların hangisi geçerli? rand geçerli ise rastgele göstermesi gerekeir. o zaman neden siteye en son eklenen yazıları gösteriyor? desc geçerli ise anlamı ne? benim ilk aklıma gelen description ama ne alaka?

    şimdi sevgili hocam, ben bu kodları nasıl bir değişiklik yapayım ki bana; herhangi bir yazıya girdiğimde, o yazı hangi kategorideyse, o kategoriye en son eklenen yazıları göstersin?

    (bu arada sitedeki yazıların büyük bölümünün 2 tane kategorisi var. onlarda da sanırım id numarasına göre yada alfabetik olarak hangisi önde geliyorsa onu sıralar) sıralasın farketmez..siteye en son eklenenleri sıralamasından iyidir. çünkü o div’in başlığında “alakalı yazılar” ifadesini kullanıyorum. adam bakıyor ne alaka diyor 🙂 ama yanı kategoride olursa biraz alakalı olur ve kullanıcıyı tıklamaya teşvik eder..

    bu arada diğer favicon yazın içinde tşk ederim. az önce onu da yaptım. çok faydalı yazılar yazıyorsun. sürekli takip ediyorum adobewp’i 🙂 bir de şu otorefresh olmasa süper olcak 🙂 şu yorumu yazana kadar 3 refresh yaptı sayfa:(

    neyse hocam, saygılar..

  • ilhan

    Benzer yazıları yan yana gösterebilir miyiz?