14 Mart 2009

5 Faydalı WordPress SQL Sorgusu

WordPress Yorum Ekle

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.

  1. 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.

  1. 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.

  1. 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.

  1. 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.

  1. 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.

  1. 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;

  1. 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.


“5 Faydalı WordPress SQL Sorgusu” yazısı için 5 Yorum

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

  1. Ramazan ELBAŞI dedi ki:

    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.

  2. Yakup Gövler dedi ki:

    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.

  3. ibrahim çınar dedi ki:

    wordpressi geliştiriyolarlar ama bu yazı sürümlerini kapatma ya da silme özelliğini eklemeyi niye akıl edemiyorlar acaba.

  4. Yakup Gövler dedi ki:

    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.

  5. 6 Faydalı WordPress SQL sorgusu | Ayperisi.Org dedi ki:

    [...] 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 [...]