24 Haziran 2009

Yazılarla İlişkisiz Etiketleri Siliyoruz

WordPress Yorum Ekle

WordPress'te yazılara eklediğimiz etiketlerin bir süre sonra yazılarla olan ilişkilerini kesebiliyoruz. Bu tür etiketlere "Yazı Etiketleri" sayfasındaki listede Yazılar sütunundaki değer 0 olan etiketler, herhangi bir yazıyla ilişkisi olmayan etiketlerdir. Bazı sitelerde bunların sayıları oldukça artabilir ki bu da veritabanı performansını düşürebilir. Bu etiketleri isterseniz oradaki listeden teker teker seçip silebilirsiniz. Ya da benim yöntemimle topluca silebilirsiniz. O zaman haydi bu etiketleri silelim.
Aşağıdaki kodu temanızın Tema fonksiyonları (functions.php) dosyasına uygun şekilde ekleyin ve birkez sitenizin ana sayfasını ziyaret edin. Yazılarla ilişkili olmayan bütün etiketler silinmiş olacak. Tabi bunu uygulamadan önce en azından veritabanınızın yedeğini almanızı şiddetle tavsiye ediyorum.

  1. $etiketler = array();
  2. $etiketler = get_terms('post_tag', 'hide_empty=0');
  3. $term_ids = array();
  4. foreach ($etiketler as $etiket) {
  5.      $term_ids[] = $etiket->term_id;
  6. }
  7. wp_update_term_count_now( $term_ids, 'post_tag' );
  8. //Etiketlerin ilişkili olduğu yazı
  9. //sayılarını güncelliyoruz.
  10.  
  11. $etiketler = NULL;
  12. $etiketler = array();
  13. $etiketler = get_terms('post_tag', 'hide_empty=0');
  14. $term_ids = NULL;
  15. $term_ids = array();
  16. foreach ($etiketler as $etiket) {
  17.  if ($etiket->count == 0) {
  18. //Yazı sayıları 0 olanları
  19.     wp_delete_term( $etiket->term_id, 'post_tag');
  20. //Siliyoruz
  21.  }
  22. }

İşlem sunucunuza göre biraz zaman alabilir. Sitenizin ana sayfasını bir kez ziyaret ettikten sonra kodları tema dosyanızdan silin, aksi halde her sayfa yenilendiğinde işlem yenileneceğinden sitenizin performansı düşebilir.


Bu yazının kısa bağlantısı http://www.yakupgovler.com/?p=914.

Yazılarımı RSS aboneliği ile takip edebilir, yeni yazılarıma kolaylıkla ulaşabilirsiniz. Bunun için ise RSS adresimi kullanabilirsiniz.


“Yazılarla İlişkisiz Etiketleri Siliyoruz” yazısı için 5 Yorum

Bu yazıya yapılan yorumları dilerseniz, ( RSS 2.0 ) beslemesini kullanarak takibe alabilirsiniz.

  1. fatih dedi ki:

    wordpress konusunda sınır yok sanırım 🙂 teşekkür ederim kolay gelsin

  2. sabri üna dedi ki:

    sql sorgusu ile de temizlenebilirler gibime geliyor... iç içe bir sorgu çalıştırmak yetecektir... lakin kendi sistemimde test etmeye kıyamıyorum 🙂

    wordpress autosave fonksiyonu ilk yayınlandığında autosave dosyalarını sql sorgusu ile silmeye çalışırken bütün siteyi silmiştim, tecrübe oldu.

  3. Yakup Gövler dedi ki:

    Bazı eklentiler yardımıyla (özellikle botlar) etiket eklendiğinde bu etiketlerin kaç taneye yazıya eklendiği bilgisi boş bırakılabiliyor. SQL ile bunları silerken tablodaki count alanı 0 olanları sildiğimizde arada yazılarla ilişkili olanlar da silinebiliyor. Koddaki birinci amaç buydu.
    Etiketler ve kategoriler için birbiriyle ilişkili birden fazla tabloyla işlem yapmak gerekiyor. Sadece bir tabloda yapacağınız değişiklik, uygun şekilde diğerlerine de yansıtılmazsa problemler yaşanabilir.
    Bütün bu problemlere karşı benim kodumu kullanmanızı tavsiye ederim.

  4. hakan dedi ki:

    silmeden önce hiçbir konuyla ilişkilenmemiş etiketleri görebilirmiyiz? veya sildikten sonra hangilerinin silindiğini?

    ben daha önce 10 bin etiketi gözden geçirip, bu tür etiketleri manuel temizlemiştim. boşuna o kadar vaktimi harcamışım 🙁

    teşekkürler

  5. Yakup Gövler dedi ki:

    Buradaki kodlarla bu pek mümkün değil. Bunun için bir eklenti yazılması lazım.