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.