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.

Bu da ilginizi çekebilir  WordPress'e yumuşak geçişli 'Yukarı Çık' butonu ekleyin!

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?

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