
Wordpress’iniz varsa üzülerek söylüyorum ki düzenleme ve periyodik bakım konusunda yapmanız gereken çok işiniz var demektir. Ve bazı durumlarda karşılaştığınız spesifik problemler için hızlı olmak zorunda kalabilirsiniz. İşte böyle durumlarda direkt veritabanı üzerinde çalışmak gerçekten hayat kurtarabilir. Bu makalede Wordpress için 10+ kullanışlı SQL sorgusunu görebilirsiniz. Wordpress’iniz zor durumda kaldığında bu hızlı ve pratik sorgular kesinlikle işinize yarayacak.
SQL Sorgulaması Nasıl Yapılır?
Henüz bilmeyenler için kısaca bahsedeyim. SQL sorguları MySQL komut satırı yorumlayıcısında çalıştırılır. Ya da bir çoğumuzun kullandığı PhpMyAdmin gibi popüler bir web arayüzü de kullanılarak yürütülebilir. Kullanıcı dostu arayüzü ve ile SQL sorgularının direkt olarak yorumlanmasını sağlayan SQL Executionner wordpress eklentisini de mutlaka kullanmanızı tavsiye ederim.
Sorgulardan önce…
Bu SQL sorguları her ne kadar test edilmiş olsa da, her şeye rağmen sorguları gerçekleştirmeden önce veritabanının yedeğini almayı sakın unutmayın.
Şifrenizi Elle Değiştirmek
Bir gün sizin de başınıza gelebilir. Eğer admin şifrenizi unutursanız tek çözüm MySQL Veritabanı’nda yeni bir şifre oluşturmaktır. Bu sorgunun tek görevi de bu. Yalnız şifre dönüştürme işlemi için MD5 fonksiyonunun kullanıldığına da dikkatinizi çekmek isterim.
Kod: Tümünü seç
UPDATE 'wp_users' SET 'user_pass' = MD5('PASSWORD') WHERE 'user_login' ='admin' LIMIT 1;Yeni Wordpress kullanıcıları, güvenlik açısından yazılarını “admin” adı ile yazmamaları gerektiğini bilmiyor ya da unutmuş olabilirler. Eğer siz de bu hatayı yaptıysanız bu sorgu ile eski yazılarınızı yeni oluşturduğunuz kullanıcıya aktarabilirsiniz. Bu sorguyu kullanırken eski ve yeni kullanıcı adına ihtiyacınız olacaktır.
Kod: Tümünü seç
UPDATE wp_posts SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID;Güncelleme bilgileri bazen kullanışlı olabiliyor. Özellikle de çok kullanıcılı bloglarda. Ancak bu güncelleme bilgilerinin veritabanındaki kayıtları göründüğünden daha fazla. Örneğin; Blogunuzda 100 adet yazı var ve her biri 10 defa düzenlenerek güncellenmiş. Bütün bu işlemler veritabanındaki wp_posts tablosunda tam 1000 adet kayıt tutulması anlamına geliyor. Oysa size 100 adet kayıt yeterli.
İşte bu sorgu, bahsettiğimiz yazı güncelleme bilgilerini ve ilgili metaları anında silmeye yarıyor. Veritabanındaki şişkinliği giderip rahatlatmak için oldukça işe yarar bir sorgu.
Kod: Tümünü seç
DELETE a,b,c FROM wp_posts a WHERE a.post_type = 'revision' LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id) LEFT JOIN wp_postmeta c ON (a.ID = c.post_id);Fazla söze gerek yok aslında, başlık her şeyi anlatıyor. Onay listesinde biriken spam yorumları toplu halde silmenize yarıyor.
Kod: Tümünü seç
DELETE from wp_comments WHERE comment_approved = '0';Etiketler veritabanının wp_terms tablosunda kaydedilir. Ve bazen oluşturulduğu günden beri hiç kullanılmayan etiketler olabilir. Bu kullanılmayan etiketlerin veritabanında daha fazla yer kaplamasını istemiyorsanız, bu sorgu ile güvenli bir şekilde silebilirsiniz.
Kod: Tümünü seç
SELECT * From wp_terms wt INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag' AND wtt.count=0;Bu aslında Wordpress için çok gerekli olmayabilir ancak MySQL kullanan herkesin bilmesi gereken bir ipucu. replace() fonksiyonu bir stringi bulup başka bir string ile değiştirmeye yarar. Bu sorguyu çalıştırarak, bir stringi -bütün özellikleri ile birlikte- başka bir stringle değiştirebilirsiniz.
Kod: Tümünü seç
UPDATE table_name SET field_name = replace( field_name, 'string_to_find', 'string_to_replace' ) ;Bütün yorum yazanların emaillerini liste halinde görmenizi sağlayan kullanışlı bir sorgu. DISTINCT parametresi sayesinde birden fazla yorum yazan kişilerin email adresini sadece bir kere listeliyor
Kod: Tümünü seç
SELECT DISTINCT comment_author_email FROM wp_comments;Wordpress’te bir şeyler ters gittiğinde çoğunlukla problemin kaynağı kurulan eklentiler olabilir. Ve çok ziyaretçili web sitelerinde bu problemi çözmek için hızlı olmanız gerekir. Bu sorgu sayesinde bütün eklentileri aynı anda etkisizleştirerek problemin çözümünde daha hızlı yol alabilirsiniz.
Kod: Tümünü seç
UPDATE wp_options SET option_value = '' WHERE option_name = 'active_plugins';Wordpress’te etiketler kategorilerine ve sınıflarına göre kaydedilir. Eğer oluşturduğunuz bütün etiketleri silmek isterseniz, bu işlemi yazılarınıza zarar vermeden gerçekleştiren bu sorgu çok işinize yarayacak
Kod: Tümünü seç
DELETE a,b,c
FROM
database.prefix_terms AS a
LEFT JOIN database.prefix_term_taxonomy AS c ON a.term_id = c.term_id
LEFT JOIN database.prefix_term_relationships AS b ON b.term_taxonomy_id = c.term_taxonomy_id
WHERE (
c.taxonomy = 'post_tag' AND
c.count = 0
);Blogunuzda yazdığınız yazıların meta bilgileri eklentiler ve özel alanlar aracılığı ile oluşturulur. Çoğu zaman işinize yarasa da veritabanının birdenire büyümesine neden olur. Bu sorgu ile kullanılmadığı halde veritabanında yer kaplayan meta bilgilerini listeleyebilirsiniz.
Kod: Tümünü seç
SELECT * FROM wp_postmeta pm LEFT JOIN wp_posts wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL;1 yıldan daha fazla süredir blog sahibi olanlar bilecektir, eski yazıların altında biriken yorumlar güncelliğini yitirdiği için çoğu zaman okunmadığı halde gereksiz yer kaplayabiliyorlar. Aşağıdaki sorguda 2009-01-01 yerine istediğiniz tarihi yazarak, belirlediğiniz tarihten önceki yazıların yorumlarını anında silebilirsiniz. Kesinlikle bir çok kişinin işine yarayacağını tahmin ediyorum.
Kod: Tümünü seç
UPDATE wp_posts SET comment_status = 'closed' WHERE post_date < '2009-01-01' AND post_status = 'publish';MySQL’deki replace() fonksiyonunun ne kadar işe yaradığından bahsetmiştim. Aşağıdaki sorgu da kesinlikle bunu kanıtlıyor. Özellikle de backlink için yazılan URL adreslerini değiştirmeniz için işinize yarayabilir.
Kod: Tümünü seç
UPDATE wp_comments SET comment_author_url = REPLACE( comment_author_url, 'http://oldurl.com', 'http://newurl.com' );Bu sorgu ile de yorum yazan kişilerin email adreslerini yenisi ile değiştirebiliyorsunuz.
Kod: Tümünü seç
UPDATE wp_comments SET comment_author_email = REPLACE( comment_author_email, 'old-email@address.com', 'new-email@address.com' );Son olarak, blogunuza yorum şeklinde eklenen spam linklerin önüne geçebilmek için işinize yarayacak bir SQL sorgusu. Sorguda bulunan “%wpbeginner%” bölümü “%” işaretinin arasında olan url adresinin bulunduğu bütün yorumların silinmesi anlamına geliyor.
Kod: Tümünü seç
DELETE from wp_comments WHERE comment_author_url = "%wpbeginner%" ;
