Ana Sayfa » »
Tem
6
2013

Yazıda Önceki Etiketler Varsa Onları da Ekle

Yazdığımız yazılarda etiketleme sistemini kullanmak çok önemli, ancak bazen etiketleme yapmayı unutabiliyor ya da hangi etiketleri kullanacağımızı bilemeyebiliyoruz. Böyle durumlarda, yazıyı yayınla dediğimizde, sitede yazılara eklenmiş olan etiketleri yazdığımız yazı içerisinde arasa, eğer varsa o etiketi, yayınladığımız yazıya eklese güzel olmaz mı?
Güzel olur diyorsanız, aşağıdaki kodu temanızın functions.php dosyasına eklemeniz yeterli.

<?php
add_action('publish_post', 'yakuphoca_onceki_etiketleri_ekle', 99, 2);
function yakuphoca_onceki_etiketleri_ekle($post_id, $post){
  if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
  if ( wp_is_post_revision( $post_id ) ) return $post_id;
  if ( !current_user_can( 'edit_post', $post_id ) ) return $post_id;
//Son eklenen 200 etiket için kontrol eder
  $etiketler = get_tags( array('hide_empty' => false, 'number'=>200, 'orderby' => '', 'order' => 'DESC' ) );  
  if ($etiketler) {
     $post_content = $post->post_content;
     foreach ( $etiketler as $etiket ) {
        if ( stripos($post_content, $etiket->name) !== false) $eklenecek_etiketler[] = $etiket->name;	   
     }
     if ($eklenecek_etiketler) wp_set_post_tags( $post_id, $eklenecek_etiketler, true );
  }
}
?>

Kod yazıyı yayınla dediğinizde (dikkat kaydettiğinizde değil, yayınla dediğinizde bir kereye mahsus ekleme yapar) siteye eklenmiş son 200 etiketi alır (kod içerisindeki 200 değerini istediğiniz bir sayı ile değiştirebilirsiniz), yazı içeriğinde bunları arar, bulduklarını o yazıya ekler. Etiket sayısını artırırsanız, yazıyı yayınla dedikten sonra biraz daha fazla beklemeniz gerekebilir. Sitemdeki etiket sayısı fazla olmadığından performansa etkisini bilemeyeceğim ama kodu performansı en az şekilde ekleyecek şekilde oluşturdum.

Bu yazımı beğendiyseniz, bu kategoride yer alan WordPress Metin Editörüne Düğmeler Ekliyoruz başlıklı fonksiyon, functions.php ve WordPress konularında bilgi veren bir önceki yazımı da okumanızı tavsiye ederim.

Yorumunu Yaz

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

Yukarı Çık