WP içerisinde bazı işlemleri yapmak bazen can sıkıcı olabilir. Bu tür durumlarda SQL sorguları bizim için kurtarıcı olabiliyorlar. Onaysız yorumları topluca silmek, yazılar içerisinde değişiklik yapmak, unutulan şifreleri sıfırlamak vb. işlemleri SQL sorgularını kullanarak kolaylıkla yapabiliyoruz.
Yazı Sürümlerini Siliyoruz
WP'nin yeni sürümlerinde ortaya çıkan yazı sürümleri her ne kadar iyi niyetle düşünülmüş bir özellik olmuş olsa da, uygulamada problem haline gelmiştir. Özellik, mevcut haliyle veritabanını şişirmekten başka birşeye yaramıyor. Eğer bu özelliği iptal etmemişseniz, veritabanınızın wp_posts tablosunun ne kadar fazla şiştiğini görebilirsiniz. Bu tablo içerisindeki yazı sürümlerinin tamamını silmek için aşağıdaki sorguyu PhpMyAdmin'deki SQL penceresinden çalıştırmanız yeterli. Sorgulardaki wp_ ifadesi sizin sitenizde farklı olabilir, bu kısmı kendinize göre düzenlemeyi unutmayın.
- DELETE FROM wp_posts WHERE post_type = "revision";
Onaysız Yorumlara Ölüm
Özellikle yoğun trafiği olan sitelere her gün onlarca, yüzlerce yorum gelebiliyor. Bunların birçoğu onaylanmıyor ancak o anda da silinmeyebiliyor. Bunlar birikerek yüzlerce onaysız yorum ortaya çıkabiliyor. WP'nin yorumlar bölümünde bunları tek seferde silme imkanı yok ne yazık ki, ama küçük bir SQL sorgusu ile onaylanmamış bütün yorumları tek bir seferde silebilirsiniz. Sorguyu kullanırken dikkatli olun, onaylı yorumlarınızı silmeyin.
- DELETE from wp_comments WHERE comment_approved = '0';
Yazıların Yazarlarını Değiştirme
WordPress'te her yazının bir yazarı bulunmakta. Bazen öyle durumlar ortaya çıkabiliyorki, belli bir yazarın yazılarını başka bir yazara aktarmak gerekebilir. Gerçi kullanıcıyı sildiğinizde yazılarını istediğiniz bir kullanıcıya aktarabilmenize WP izin veriyor ancak kullanıcıyı silmeden aktarma yapmanın kolay bir yolunu WP sunmuyor. Aşağıdaki sorgu ID'sini bildiğiniz bir yazara ait yazıları yine ID'sini bildiğiniz başka bir yazara aktarıyor.
- UPDATE wp_posts SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID;
Kullanıcı Şifresini Sıfırlıyoruz
Bir kullanıcının şifresi unutulabiliyor, böyle durumlarda parola sıfırlama için e-posta istenebiliyor ancak e-posta sistemi bazen çalışamayabiliyor. Bir kullanıcının parolasını elle sıfırlamak istediğinizde aşağıdaki gibi bir SQL sorgusunu kullanabilirsiniz. Örnek sorguda admin kullanıcısına ait parola değiştiriliyor. WP'de parolalar MD5 ile kodlanıyor, biz de önce parolayı MD5 ile kodluyor, ardından kaydediyoruz.
- UPDATE 'wp_users' SET 'user_pass' = MD5('yeniparola') WHERE 'wp_users'.'user_login' ='admin' LIMIT 1;
Alan Adımızı Değiştiriyoruz
Yeni bir alan adına sitemizi taşıdığımızda eğer veritabanındaki site adresini değiştirmemişsek, sitemiz açılmaz. Sitemize giremediğimiz için de bunu değiştirmek SQL sorgusuna düşüyor. Aşağıdaki sorgu ile wp_options tablosundaki site adresini değiştirebilirsiniz.
- UPDATE wp_options SET option_value = replace(option_value, 'http://www.eskisite.com', 'http://www.yenisite.com') WHERE option_name = 'home' OR option_name = 'siteurl';
Tabi bu değişikliği yaptığınızda sitenize giriş yapabilirsiniz ama yazıları okuyamazsınız, çünkü yazılarınızın bağlantıları hala eski sitenize göredir, bunu değiştirmek için aşağıdaki sorguyu kullanabilirsiniz. Sorgu yazı adreslerindeki eski site adresini yenisiyle değiştiriyor.
- UPDATE wp_posts SET guid = replace(guid, 'http://www.eskisite.com','http://www.yenisite.com');
Son bir değişiklik yapmanız daha gerekiyor, o da yazılarınızdaki, eski site adresine bağlı olan resim vb. medyaların adreslerini değiştirmek. Eğer bunu yapmazsanız, sitenizdeki resimler gösterilmeyeceklerdir. Sorgu şöyle;
- UPDATE wp_posts SET post_content = replace(post_content, 'http://www.eskisite.com', 'http://www.yenisite.com');
Yazılardaki adresleri değiştirmek yetmeyecektir, yorumlardaki vb. yerlerdeki eski site adreslerini de değiştirmeniz gerekiyor. Bunun için ise buradaki yazımda bahsettiğim Search and Replace eklentisini kullanabilirsiniz, tabi oradaki config.php düzenlemesini yaptıktan sonra.
Kaynak: SmashingMagazine
Bu yazının kısa bağlantısı http://www.yakupgovler.com/?p=719.
Yazılarımı RSS aboneliği ile takip edebilir, yeni yazılarıma kolaylıkla ulaşabilirsiniz. Bunun için ise RSS adresimi kullanabilirsiniz.
Tarih: 14 Mart 2009 Saat: 18:10
Peki yazı sürümlerini tamamen engellemeyi yapabilmenin bir yolu var mı? Her seferinde phpmyadminde bu soruguyu çalıştırmak zorunda kalmak istemiyorum.
Daha önce tanıttığınız eklentiyle bu iş yapılıyor. Eklenti kullanmadan function.php dosyasına eklenecek bir kod veya başka bir dosyadaki kod düzenlemesiyle bu özellik kapatılabilir mi? Merak ettim.
Tarih: 14 Mart 2009 Saat: 18:16
wp-config.php dosyasına
define ('WP_POST_REVISIONS', 0);
kodunu ekleyerek kapatabilirsiniz.
Functions.php dosyasına ise
@remove_action ('pre_post_update', 'wp_save_post_revision' );
kodunu ekleyerek de engellemeyi deneyebilirsiniz (bundan emin değilim).
Not: Tek tırnaklara dikkat, kodları kopyala/yapıştır yaptıktan sonra tırnakları silip, yeniden yazın.
Tarih: 14 Mart 2009 Saat: 18:25
wordpressi geliştiriyolarlar ama bu yazı sürümlerini kapatma ya da silme özelliğini eklemeyi niye akıl edemiyorlar acaba.
Tarih: 14 Mart 2009 Saat: 19:34
Geliştiriciler bu özelliği iyileştirip, kullanmayı düşünüyorlar. Aslında iyi kurgulanmış olsaydı, özellikle birden fazla yazarı olan sitelerde bir yazıyı kimler düzenlemiş, ne tür değişiklikler yapmış onu görebilme şansı verecekti.
Tarih: 19 Eylül 2010 Saat: 14:48
[...] o yazıyı gösterince konu üzerinde durmak istedim ve düzgün bir şekilde yazmak istedim. 5 Faydalı WordPress SQL Sorgusu (yakupgovler’in yazılarınıda takip etmenizi tavsiye [...]