Hiç wp_posts tablonuzda kaç satır var merak ettiniz mi?

Bu örnekte bunların 326 tanesi WordPress tarafından otomatik kaydedilen “versiyon”lar desem?

Öncelikle wp_posts tablosunun içeriğinden biraz bahsetmeliyim. Burada yazdığınız yazıların yanında, yüklediğiniz dosyaların bilgileri, yarattığınız sayfalar, özel menülerin elemanları vb. bilgiler de tutulmakta.

Tam olarak tabloda neler olduğunu görmek istiyorsanız, şu SQL’i çalıştırmalısınız:

SELECT COUNT(*), `post_type` FROM `wp_posts` GROUP BY `post_type`;

Bunun sonucunda aşağıdaki gibi bir sonuç alacaksınız:

Bu benim blogun değerleri. Yani 144 adet dosya yüklemişim, 3 tane özel menü linki, 2 tane sayfa, 48 tane yazı ve..

326 tane yazı versiyonu!

Bu ne ki diyorsanız..

WordPress’de yazı versiyonu mantığı

Kapatılmadığı sürece, WordPress’te bir yazı yazıp Kaydet’e her bastığınızda, yazının bir önceki halini silmez, yeni yaptığınız değişiklikleri “versiyon” olarak kaydeder. Dolayısıyla, WordPress, Kaydet tuşuna her bastığınızde wp_posts tablosunda post_type = revision olarak yeni bir satır oluşturur.

Bunun haricinde, bir yazıyı düzenlerken/oluştururken, düzenli aralıklarla yaptıklarınız kaydedilir, buna da autosave deniyor. Autosavelar versiyonlardan farklı olarak, kaydet/yayımla dediğinizde silinirler. Browserınızın çökmesi, elektriğinizin kesilmesi vs. gibi durumlarda yazdıklarınızın beyhude olmaması amaçlıdır.

Aslında güzel bir özellik. Versiyon mantığı sayesinde, yönetim panelinde yazınızı düzenlerken önceki versiyonları görebilir, iki versiyon arasında karşılaştırma yapabilir (diff) ve bir ya da daha eski versiyona dönebilirsiniz.

Eğer siz de yazıyı yayımladıktan sonra orasını burasını birçok kere düzeltenlerdenseniz; wp_posts tablonuzda bir ton yazı revizyonu tutuluyor demektir. Sorun şu ki, genelde eski versiyonlara dönme ihtiyacı duymuyorum. Tek yazarlı blogların genelinde de duyulmuyor. Bu durumda yapabileceğiniz iki çözüm var. Birincisi; WordPress’in versiyon tutma olayını iptal etmek. İkincisi ise manual olarak, versiyon kayıtlarını veritabanından temizlemek. İkinciden başlıyorum, zira birinciyi yapabilmek için önce ikinciyi de uygulamanız gerekli.

Veritabanından yazı versiyonlarını temizlemek

Bu bir SQL cümleciği ile halledilebilen bir şey, dolayısıyla bu SQL’i çalıştırabilmek için bir yol bulmanız gerekli. Belki de bunu yapan bir eklenti yazmalıyım, hmm. Neyse.

Ben PHPMyAdmin kullanacağım. WordPress blogumuzun veritabanını seçelim, SQL sekmesine tıklayalım ve şu SQL’i çalıştıralım.

DELETE p, r, m
FROM `wp_posts` p
LEFT JOIN `wp_term_relationships` r ON (p.`ID` = r.`object_id`)
LEFT JOIN `wp_postmeta` m ON (p.`ID` = m.`post_id`)
WHERE p.`post_type` = 'revision';

Bu SQL’in çalışması ile birlikte tüm yazdığınız yazıların versiyonlarından kurtulmuş oluyorsunuz.

Benim tavsiyem, arada bir bu SQL’i çalıştırarak tabloyu temiz tutmanız yönünde. Ama ben versiyon tutulmasını tamamen gereksiz buluyorum, veritabanımı boşuna şişirmesin diyorsanız, bir sonraki adımı takip etmeniz yeterli.

WordPress’in yazı versiyonu tutma özelliğini devre dışı bırakmak

Versiyon tutulmasını istemiyorsanız, WordPress 2.6 ile beraber gelen devre dışı bırakma özelliğini kullanabiliriz. Bunun için, FTP ile sitenize bağlanıp, wp_config.php dosyanızı düzenlemeniz gerekiyor.

wp_config.php dosyanızda WP_DEBUG define’ının altına şu satırı ekleyin.

define('WP_POST_REVISIONS', false);

Görüntü şöyle oluyor:

Dosyanızı kaydettikten sonra artık her kaydetmenizde yeni versiyon oluşturmayan bir WordPress’in tadını çıkarabilirsiniz. Bu işlemin önceki yazılar için oluşturulmuş versiyonları silmeyeceğini hatırlatayım. Tamamen kurtulmak istiyorsanız sırasıyla önce bir yukarıdaki başlığın altındaki işlemi uygulayıp, sonra bu düzenlemeyi yapmalısınız.

Kolay gele.