Ana Sayfa » »
Tem
12
2013

Yayınlanan Yazının Başlığındaki Kelimeler Otomatik Etiket Olsun

WordPress'te etiketleme sistemi, arama motorlarından indeks almak için bulunmaz bir nimettir. Eğer abartıya kaçılmadan, mantığına uygun şekilde kullanılırsa gerçekten faydalı olacaktır. Ancak etiketlemedeki en önemli sorun, her yazı için bunları elle girmek ve ne gireceğimize karar vermek.

İşte bu konuda yapılabilecek en uygun çözümlerden birisi, yazı başlığını kelimelere bölüp, gerekirse istediğimiz kalıpta etiketlere dönüştürüp, yazıyı yayınladığımızda yazıya eklemek olsa gerek.

Daha önceden yazdığım Yazıda Önceki Etiketler Varsa Onları da Ekle başlıklı yazıda etiketleri otomatik eklemeyle ilgili başka bir yöntem paylaşmıştım. Ama siz eğer yine de başlıkları etikete dönüştüreyim derseniz de aşağıdaki kodu temanızın functions.php dosyasına uygun şekilde eklemeniz yeterli.

function yakuphoca_basligi_etiketlere_donustur($post_id, $post) {
 $etiket_kelimeleri = explode(" ", preg_replace("([^A-Za-z0-9üğıişçöÜĞİŞÇÖ]+)", " ", $post->post_title));
 $etiketler = array();
 foreach ($etiket_kelimeleri as $etiket) {
  if (strlen($etiket)> 4) $etiketler[] = $etiket;
 }
 if ($etiketler) wp_set_post_tags($post_id, $etiketler, true);
}

add_action('publish_post', 'yakuphoca_basligi_etiketlere_donustur', 10, 2); 

Kodun yaptığı iş basitçe başlığı içerisindeki sembolleri sildikten sonra kelimelere bölmek, ardından eğer kelime uzunluğu 4'ten fazlaysa (başlık içindeki ve, veya, iyi, gibi kelimeleri almamak için) onu etiket olarak eklemekten ibarettir.

Yazı Başlığı da Etiket Olsun İstiyorsanız

Eğer düşünceniz yazı başlığı da etiket olsun ise bu durumda aşağıdaki kodu kullanın.

function yakuphoca_basligi_etiketlere_donustur($post_id, $post) {
 $baslik = preg_replace("([^A-Za-z0-9üğıişçöÜĞİŞÇÖ]+)", " ", $post->post_title);
 $etiket_kelimeleri = explode(" ", $baslik);
 $etiketler = array();
 $etiketler[] = $baslik;
 foreach ($etiket_kelimeleri as $etiket) {
  if (strlen($etiket)> 4) $etiketler[] = $etiket;
 }
 if ($etiketler) wp_set_post_tags($post_id, $etiketler, true);
}
add_action('publish_post', 'yakuphoca_basligi_etiketlere_donustur', 10, 2);

Kodu incelediğinizde göreceksiniz ki foreach ile başlayan satırdan önce $etiketler[] = "istediğiniz ifade" şeklinde eklemelerle istediğiniz gibi etiketler oluşturabilirsiniz.

Yazı Başlığı Filmini İzle, Yazı Başlığı Oyununu Oyna Şeklinde Etiket Oluşturmak İstersek

Bu durumda yine yukarıdaki kodu biraz değiştirerek kullanabiliriz.

function yakuphoca_basligi_etiketlere_donustur($post_id, $post) {
 $baslik = preg_replace("([^A-Za-z0-9üğıişçöÜĞİŞÇÖ]+)", " ", $post->post_title);
 $etiket_kelimeleri = explode(" ", $baslik);
 $etiketler = array();
 $etiketler[] = $baslik. " Filmini İzle";
 $etiketler[] = $baslik. " Filmini HD izle";
 $etiketler[] = $baslik. " Filminin Fragmanını İzle";
 foreach ($etiket_kelimeleri as $etiket) {
  if (strlen($etiket)> 4) $etiketler[] = $etiket;
 }
 if ($etiketler) wp_set_post_tags($post_id, $etiketler, true);
}
add_action('publish_post', 'yakuphoca_basligi_etiketlere_donustur', 10, 2);

Koddaki $baslik değişkenine eklenen ifadeleri siz istediğiniz gibi değiştirip, o satırları çoğaltarak, etiketlerin istediğiniz gibi oluşmasını sağlayabilirsiniz. Bu arada kod ayrıca başlığı kelimelere ayırıp, etiket olarak eklemeye de devam edecektir.

Ek İstek: Yazı Başlığını - (tire) Sembolünü de Kullanarak Parçalasın

Bazı sitelerde yazı başlıklarında - (tire) sembolü sık sık kullanılır. Örneğin bir video klip sitesinde başlıklar genelde Şarkıcı - Şarkı adı şeklinde oluşturulur. Bu tür sitelerde başlığı kelimeleri kullanarak ayırmanın yanında bir de - (tire) sembolünü de kullanarak, parçalamak ve etiket olarak kullanmak faydalı olabilir. Kodumuz yukarıdaki tüm kodlara uyarlanabilir, ben en sonuncu koda ekleyip, göstereceğim.

function yakuphoca_basligi_etiketlere_donustur($post_id, $post) {
 $baslik = preg_replace("([^A-Za-z0-9üğıişçöÜĞİŞÇÖ]+)", " ", $post->post_title);
 $etiket_kelimeleri = explode(" ", $baslik);
 $etiketler = array();
 $etiketler[] = $baslik. " Filmini İzle";
 $etiketler[] = $baslik. " Filmini HD izle";
 $etiketler[] = $baslik. " Filminin Fragmanını İzle";
 foreach ($etiket_kelimeleri as $etiket) {
   if (strlen($etiket)> 4) $etiketler[] = $etiket;
 }
//Aşağıdaki bölüm başlıkları - (tire) sembolünü kullanarak ayırır
//ve etiketlere dönüştürür
 $etiket_kelimeleri = explode("-", preg_replace("([^A-Za-z0-9üğıişçöÜĞİŞÇÖ\-]+)", " ", $post->post_title));
 foreach ($etiket_kelimeleri as $etiket) {
  if (strlen($etiket)> 4) $etiketler[] = trim($etiket);
 }
 if ($etiketler) wp_set_post_tags($post_id, $etiketler, true);
}
add_action('publish_post', 'yakuphoca_basligi_etiketlere_donustur', 10, 2);

Yukarıdaki kod ile örneğin Sezen Aksu - Firuze şeklindeki bir başlıktan Sezen Aksu ve Firuze etiketleri de elde edilmiş olur.

Bu yazımı beğendiyseniz, bu kategoride yer alan Özel Yazı Türlerinde "Başlığı girin" Yazısını Değiştirme başlıklı functions.php, post_type ve WordPress konularında bilgi veren bir önceki yazımı da okumanızı tavsiye ederim.

Yazıya 3 Yorum Yapıldı+ Yorum Ekle

  • Hocam bu tarz etiketleri bu tarz yolla eklemek mi yoksa elle girmek mi daha mantıklı sizce? Google böyle otomatikleşen şeyleri pek sevmez.Doğal değil yani.Sadece bir görüş :)

    • Elle girmek tabi ki doğru olandır. Buradaki kodlar, daha çok SPAM etiket yapmayı düşünenler ya da belirli kategorideki siteler (film, dizi, müzik vs.) için kullanışlı olabilir. Yoksa bizim gibi kendi halinde yazı yazanların, bu tür atraksiyonlara girmesine gerek yok.

      • Kesinlikle :)

Yorumunu Yaz

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Yukarı Çık