WordPress için çok faydalı SQL sorguları

WordPress en popüler içerik yönetim sistemlerinden birisi benim şahsi görüşüm olarak en iyisi diyebilirim.

Aslında bir çok işlevi yönetim panelinden yapabiliyorsunuz. Fakat bazen bir siteyi taşırken, site adresini değiştirirken veya site üzerinden toplu değişiklikler yapmak istediğimizde bunu SQL sorgusu ile hızlı bir şekilde yapmak isteyebiliriz.

Aşağıdaki SQL sorguları ile işleri biraz kolaylaştırabilirsiniz.

Başlamadan Önce!

Site veri tabanında bir değişiklik yapmadan önce yedek almak hayat kurtarıcı olabilir. veri tabanı yedeğinizi phpMyAdmin yönetim panelinden alabileceğiniz gibi bunu WordPress eklentileri ile de halledebilirsiniz. WP-DB-Backup eklentisi ile kolay bir şekilde WorsPress veri tabanındaki istediğiniz tabloların yedeğiniz alabilirsiniz.

Bu eklentinin yanı sıra WP-DBManager eklentisi ile veri tabanını optimize edebilir,veri tabanındaki hataları düzeltebilir, veri tabanı yedekleme, geri yükleme, tablo silme ve sorgu gibi işlemlerini gerçekleştirebilir, yedek alma işini belirli zaman aralıklarında otomatik olarak çalışacak şekilde programlayabilirsiniz.

Ben genelde sorguları phpMyAdmin paneli üzerinden gerçekleştiriyorum.

Veri tabanı nedir? Sorusuna verecek cevabınız yoksa ve kullandığınız WordPress sitenizi kendiniz kurmadıysanız ve bu tür kodlar hakkında hiçbir fikriniz yoksa burada yazanları evde denemeyin.

WordPress veri tabanı için kullanışlı SQL sorguları

Daha önceden de söylediğim gibi ben sorguları phpMyAdmin üzerinden gerçekleştiriyorum. Eğer sizin bir phpMyAdmin paneliniz yoksa yada bu panele erişim yetkiniz yoksa bu sorguları WordPress SQL Executioner isimi WordPress eklentisini kullanarak da gerçekleştirebilirsiniz.

 

Site URL ve home URL bağlantılarının güncellenmesi

WordPress’i ilk kurduğunuzda site adresiniz “site URL” ve “home URL” olarak iki ayrı alanda saklanmaktadır. Sitenizi taşıdığınızda ve alan adınızı değiştirdiğinizde bu verileri değiştirmezseniz sayfanız düzgün çalışmayacaktır. veri tabanı üzerinden eski site adresinizi yeni site adresiniz ile değiştirebilirsiniz.

UPDATE wp_options SET option_value = replace(option_value, ‘http://www.eskisiteurl.com’, ‘http://www.yenisiteurl.com’) WHERE option_name = ‘home’ OR option_name = ‘siteurl’;

GUID değerinin güncellenmesi

Sitenizi başka bir alan adına taşıdıktan sonra yapmanız gereken hayati öneme sahip değişikliklerden birisi de GUID verisini değiştirmek olmalıdır. Sayfaların ve yazıların URL yapısının düzgün olarak çalışabilmesi için GUID değerini yeni site adresi ile değiştirmelisiniz.

UPDATE wp_posts SET guid = REPLACE (guid, ‘http://www.eskisiteurl.com’, ‘http://www.yenisiteurl.com’);

Site içeriklerinde bulunan URL bağlantılarının güncellenmesi

Bir siteyi başka bir alan adına taşıdığınızda bütün sayfa ve yazılarınızda bulunan içeriklerde gömülü medyaları ve site içi linklerinizi de değiştirmeniz gerekir. Bunu yönetim panelinden yapmaya kalkarsanız binlerce içeriği bulunan bir siteniz için günlerce uğraşmanız gerekebilir. Bu işlemi SQL sorgusu yardımıyla hızlı ve kolay bir şekilde halledebilirsiniz.

 UPDATE wp_posts SET post_content = REPLACE (post_content, ‘http://www.eskisiteurl.com’, ‘http://www.yenisiteurl.com’);

Sadece Görsel öğelerin bağlantı yolunu değiştirme

CDN kullanıyorsanız veya görsellerinizi Amazon CloudFront gibi bir altyapı ile saklıyorsanız. Görsel dosyalarınızı yolunu kendi sunucunuz yerine kullandığınız servis sunucu adresi ile değiştirmek için aşağıdaki sorgu ile sadece görseller için ‘src’ etiketi ile oluşturulmuş bağlantıları değiştireblirsiniz.

  UPDATE wp_posts SET post_content = REPLACE (post_content, ‘src=”http://www.eskisiteurl.com’, ‘src=”http://yourcdn.yenisiteurl.com’);

Yazılarınızın meta bilgisini güncellenmesi

WordPress yazılarla ilgili özel bilgileri ayrı bir veri tabanında saklar. WordPress sitenizi başka bir alan adına taşıdığınızda bu bilgileri de değiştirmeniz gerekmektedir. Aşağıdaki sorgu ile bu alandaki site adresini kolayca değiştirebilirsiniz.

UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, ‘http://www.eskisiteurl.com’,’http://www.yenisiteurl.com’);

Varsayılan kullanıcı adının “admin” değiştirilmesi

WordPress bir siteyi kurduğunuzda varsayılan yönetici kullanıcı adı ‘admin’ olarak oluşturulmaktadır. Bu herkes tarafından bilinen bir bilgidir. Bu nedenle güvenlik riski taşıdığı için bunu değiştirmeniz siteniz için faydalıdır. Bu değişikliği yönetim paneli üzerinden yapamazsınız. Aşağıdaki SQL sorgusu ile kolayca değiştirebilirsiniz.

UPDATE wp_users SET user_login = ‘Yeni-kullanici-adi’ WHERE user_login = ‘Admin’;

WordPress şifresinin değiştirilmesi

WordPress şifrenizi unuttuysanız ve sunucunuz mail gönderme özelliği kapalı ise veya kullanıcı adına bağlı e-posta adresiniz kullanılmıyor ise şifreyi değiştirmek için tek yolunuz bu değişikliği veri tabanı üzerinden yapmaktır. Aşağıdaki SQL sorgusu ile şifrenizi basit bir şekilde değiştirebilirsiniz.

UPDATE wp_users SET user_pass = MD5( ‘yeni-sifre’ ) WHERE user_login = ‘kullanici-adi’;

Yazıların bir yazardan başka bir yazara atanması

Bir yazara ait yazılara başka bir yazara aktarmak isteyebilirsiniz. Bu can sıkıcı ve zaman alıcı bir iştir. Yazı miktarının çok fazla olduğu zaman bunu yönetim panelinden yapmanız zor olabilir. Bunu SQL ile kolay ve hızlı bir biçimde halledebilirsiniz. Öncelikle aktaracağınız ve aktarılan yazarın ID numarasına ihtiyacınız var. Bunu yönetim panelinizden kullanıcı profilinizi açtığınızda tarayıcının adres çubuğunda “user_id” nin yanında yazan sayıdan öğrenebilirsiniz.

UPDATE wp_posts SET post_author = ‘yeni-yazar-id’ WHERE post_author = ‘eski-yazar-id’;

Sürümlerin silinmesi

WordPress sayfa ve yazılarında değişiklik yaptığınızda bunu farklı bir sürüm olarak kaydediyor. Bir hata yaptığınızda eski bir sürüme geri dönüş yapabiliyorsunuz. Fakat binlerce yazı ve sayfanızın olduğu bir sitede onbinlerce sürüm kaydına sahip olabilirsiniz. Bu veri tabanı dosyanızın büyümesine ve sayfa yüklenme hızınızın yükselmesine sebep olabilir. veri tabanınızı optimize etmek adına eğer ihtiyacınız yoksa bütün eski sürümleri tek seferde silebilirsiniz. Bütün sürümler meta bilgileri ile birlikte silinecektir.

DELETE a,b,c FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = ‘revision’

Yazıların meta bilgilerinin silinmesi

WordPress site sahipleri sürekli eklenti kurup kaldırırlar. Bazı eklentiler veri tabanına eklenti ile ilgili bazı meta verileri kaydederler. Eklentiyi kaldırdıktan sonra da bu veriler veri tabanınızda ‘post_meta’ tablosunda durmaya devam eder. Kullanılmayan meta verilerini veri tabanınızdan silerseniz hem veri tabanı boyutunu düşürürsünüz hem de sitenize biraz hız katabilirsiniz.

DELETE FROM wp_postmeta WHERE meta_key = ‘your-meta-key’;

Yorumlarda bulunan bütün e-posta adreslerinin toplanması

Sitenizin açıldığı günden bugüne aldığı bütün yorum yazan kişilerin e-posta adreslerini toplamak isterseniz bunu sql sorgusu ile halledebilirsiniz. Bu toplama sırasında aynı e-posta adreslerini görmezden gelerek birden fazla yorum yazan kişilerin e-posta adresleri tekrar kayıt oluşturmadan toplayabilirsiniz.

SELECT DISTINCT comment_author_email FROM wp_comments;

Bütün geri izlemelerin silinmesi (pingbacks)

Popüler yazılarınız yüzlerce geri izleme alabilir. Bu veri tabanı boyutunuzu arttırabilir. Bütün geri izlemeleri silmek için aşağıdaki komutu kullanabilirsiniz.

DELETE FROM wp_comments WHERE comment_type = ‘pingback’;

Bütün spam yorumların silinmesi

Bolca spam yorum alıyorsanız bunları silmek işkenceye dönüşebilir. Aşağıdaki SQL komutu ile bütün spam yorumları tek seferde silebilirsiniz. İsterseniz aşağıdaki parametreyi değiştirerek bütün yorumlarınızı da silebilirsiniz.

DELETE FROM wp_comments WHERE comment_approved = ‘spam’;

0 = Comment Awaiting Moderation
1 = Approved Comment
spam = Comment marked as Spam

Kullanılmayan bütün etiketlerin silinmesi

Bir şekilde eski yazılarınızı SQL üzerinden silerseniz bu yazılara bağlı olan etiketler silinmemiş olur. Bu kullanılmayan etiketleri aşağıdaki komut yardımı ile silebilirsiniz.

DELETE 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;

Kaç tane spam yorum olduğunun bulunması

‘comment_approved’ sütununa bakarak saydığımız değerleri sonuc değişkenine atayarak aşağıdaki gibi sonuçları görüntüleyebiliriz.

SELECT `comment_approved`, COUNT(*) as sonuc
FROM `wp_comments`
GROUP BY `comment_approved`
ORDER BY sonuc DESC
LIMIT 0, 30

SORGU SONUCU

comment_approved amount
spam              12118
1                   104
post-trashed          1

En fazla spam yorum alan yazıların bulunması

Popüler yazılarınız daha fazla spam yorum alabilir belki bunu tespit edip ona göre bir çözüm bulmak isteyebilirsiniz.

SELECT `comment_post_ID`, COUNT(*) as sonuc
FROM `wp_comments`
WHERE `comment_approved` = ‘spam’
GROUP BY `comment_post_ID`
ORDER BY sonuc DESC
LIMIT 0, 20

SORGU SONUCU

comment_post_ID  amount
1776               2299
2184               1840
143                1759
1366               1145
2377                960
2456                512
2536                497
683                 486
1373                236
1402                200
1522                174
2458                161
1168                127
10473               121
647                 116
2357                114
2831                111
2420                110
741                  94

 

Spam yorumların daha çok hangi ip adreslerinden geldiğinin bulunması

Spamla mücadelede en fazla spam aldığınız ip adreslerini tespit edip bu adresleri .htaccess dosyası ile engelleyebilirsiniz.

SELECT `comment_author_IP`, COUNT(*) AS sonuc
FROM `wp_comments`
WHERE `comment_approved` = ‘spam’
GROUP BY `comment_author_IP`
HAVING sonuc > 10
ORDER BY sonuc DESC
LIMIT 0, 30

SORGU SONUCU

comment_author_IP   amount
173.242.120.58      450
198.200.37.51       386
198.200.37.59       287
192.74.240.170      268
109.163.236.87      218
192.74.230.131      181
212.59.28.172       157
198.200.37.83       153
91.236.74.117       148
212.59.28.221       147
142.0.138.77        140
142.0.136.9         117
192.74.228.242      109
142.4.117.43         91
137.175.1.235        88
142.4.97.173         82
142.4.117.162        80
198.200.33.140       80
192.74.228.161       73
193.105.210.217      63
142.4.96.66          63
91.231.40.28         55
193.105.210.216      54
142.4.96.74          54
192.74.228.164       51
192.162.19.193       48
80.93.213.249        48
192.74.231.156       46
142.0.136.12         46
91.231.40.27         46
.htaccess dosyasına ip adresini aşağıdaki gibi ekleyerek sitenize girmesini dolayısıyla spam yorum bırakmasını da engelleyebilirsiniz.

# IP Engelleme Listesi
order allow,deny
deny from 173.242.120.58
allow from all

Bir yorum yaz