WordPress’te bazı işlemleri yapmak çok uğraştırıcı olabiliyor bazen çok bunalıyorsunuz. Bu işlemleri SQL sorgusuyla çok hızlı bir şekilde yapabiliriz aslında. Şimdi sizlere SQL sorgusu ile neler yapabiliceğinizi göstericem tabi herşeyden önce yedek almayı göstericem. Sorulara karşılık cevap yazıcam daha iyi anlayabilmeniz için…
1) Kişisel veritabanının yedeklenmesi
Soru: phpMyadmin’den nasıl Veritabanı (SQL) yedeği alabilirim?
Cecap: Çok kolay alttaki adımları tek tek uygulayın.
- PhpMyadmin’e giriş yapın ve WordPress veritabanını seçin.
- Üst yatay menüde “Dışarı aktar” seçeneğine tıklayın.
- Tüm tablolar otomatik seçilidir eğer seçili değilse tümünü seç yapın tüm tabloları seçin ve en alt kısımdan .gzip seçeğine tıklayın.
- Son olarak en sağ alt kısımdan GİT’e tıklayıp sabit diskinize kaydedin.
Not: WordPress kullanıcıları için daha kolay veritabanı yedek alma yöntemide var. WP-DB-Backup eklentisi ile düzenli olarak veritabanı yedeği alabilirsiniz. Henüz kurmadıysanız hemen kurun…
2) WordPress yazı sürümlerini silme ve kapatma
Soru: Yazı sürümlerini nasıl kapatırım ve bugüne kadar SQL’de kayıtlı yazı sürümlerinin hepsini nasıl silerim?
Cevap: Aslında ilk yöntem SQL sorgusu değil ancak ikinci yöntem SQL sorgusu ikisinide yapmanızı öneririm. Sırayla yapıyorum.
- wp-config.php dosyasını açın alttaki kodu yerleştiriş kaydedin.
- Phpmyadmin’den WordPress veritabanını seçiyoruz.
- SQL kısmına tıklayarak alttaki sorguyu çalıştırıyoruz.
define('WP_POST_REVISIONS', false);
DELETE FROM wp_posts WHERE post_type = "revision";
Not: Yukarıdaki SQL sorgusunda dikkat edilicek bir husus var burada “wp_posts” yazan kısımda bir değişiklik yapabilirsiniz eğer veritabanı ön ekinizi kurulumda değiştirdiyseniz bunu değiştirmek zorundasınız. Yani kurulumda tablo ön ekini “eto_” diye yazdıysanız yukarıdaki sorguda şu şekilde değiştiriceksiniz. “eto_posts” şeklinde olucak…
3) Onaysız yorumları silme (spamları yok etme)
Soru: Yoğun trafiği olan sitem var ve tatile çıktım geldiğimde sitemde 5bin kadar onaylanmamış çoğuda spam olan yorumlar gördüm. Yorumların hepsini tek tek kontrol etmem gerekti çok zamanımı aldı çünkü spamdan ayrı kendi takipcilerim yani güncel ziyaretcilerim vardı.
Cevap: Aslında bu sorun eskidendi çünkü eskiden Akismet yoktu. Yani tüm spamlarıda bir anda silmek mümkün değildi. 5bin kadar spam yorumu silmenin en hızlı yolu SQL sorgusudur.
Alttaki adımları tek tek uygulayın.
- PhpMyadmin’e giriş yapın ve WordPress veritabanını seçin.
- SQL kısmına tıklayarak alttaki sorguyu çalıştırıyoruz.
DELETE from wp_comments WHERE comment_approved = '0';
4) Yazıların yazarlarını değiştirme
Soru: WordPress ilk kurulumda bana “admin” adını verdi kısa bir süre konu açtım ancak “admin” adını değiştirmek istiyorum. Ayrıca sitemdeki diğer arkadaşlarım kullanıcı adını değiştirmek istediğinde değiştiremiyorum.
Cevap: Biliyorsunuz WordPress’te isim 1 kere alınır. Değiştirmek için sisteme göre 1 yöntem var oda “admin”i silerken yazılarını başka bir kullanıcıya aktarmayı seçerek farklı bir kullanıcıya aktarma işlemi yapabilirsiniz. Ancak bu işlemde farkındaysanız “admin” adını silmek zorundasınız. Ancak kullanıcı adını silmeden yapabiliceğiniz bir işlem var. SQL sorgusu 🙂
Alttaki adımları tek tek uygulayın.
- PhpMyadmin’e giriş yapın ve WordPress veritabanını seçin.
- SQL kısmına tıklayarak alttaki sorguyu çalıştırıyoruz.
- Öncelikle hani kullanıcının hangi ID olduğunu bilmemiz gerekir bunun için önce bu SQL sorgusunu çalıştırın.
- Altta vericeğim SQL sorgusunda “OLD_AUTHOR_ID” yazan kısıma orjinal hesabı yani yazıların bulunduğu hesabın ID numarasını yazıyorsunuz. “NEW_AUTHOR_ID” kısmına ise yeni kullanıcı ID’sini yazıyorsunuz.
SELECT ID, display_name FROM wp_users;
UPDATE wp_posts SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID;
Not: Burada “wp_” tablo ön ekini kendi veritabanınıza göre değiştirmeyi sakın unutmayın.
5) Elle parola sıfırlama
Soru: Admin şifremi kaybettim parolamı sıfırlamak için e-posta gönder diyorum mail gelmiyor.
Cevap: Bazen e-posta sistemi çalışmayabilir yada kullanıcı adınızı birisi çalmış ve mail adresini değiştirmiş olabilir. Yada ilk kayıt olduğunuz e-posta adresini yanlış hatırlıyor olabilirsiniz. Çözüm çok basit WordPress’te şifreler MD5 olarak kodlandığından SQL sorgusuyla hemen çözüm buluyoruz. Alttaki adımları uygulayınız.
- PhpMyadmin’e giriş yapın ve WordPress veritabanını seçin.
- SQL kısmına tıklayarak alttaki sorguyu çalıştırıyoruz.
UPDATE `wp_users` SET `user_pass` = MD5('yenişifre') WHERE `wp_users`.`user_login` =`admin` LIMIT 1;
Not: Yukarıdaki SQL sorgusunda 2 tane “wp_users” geçiyor yani tablo ön ekini değiştirirken ikisinide mutlaka değiştirin.
6) WordPress alan adını değiştirme
Soru: Sitemin alan adını değiştirdim ancak sitem açılmıyor? Admin panele tıkladığımda eski domaine yönleniyor.
Cevap: Bunu düzeltmek için 3 SQL sorgusuna ihtiyacınız var 🙂
- PhpMyadmin’e giriş yapın ve WordPress veritabanını seçin.
- SQL kısmına tıklayarak alttaki sorguyu çalıştırıyoruz.
- Öncelikle wp_options tablosundaki site adresini değiştiriyoruz.
- Bu değişiklikten sonra siteye giriş yapabilir ancak konulara giriş yapamazsınız. Konulara giriş yapmak içinde wp_posts tablosundaki eski site adınızı değiştirmek zorundasınız.
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';
UPDATE wp_posts SET guid = replace(guid, 'http://www.eskisite.com','http://www.yenisite.com');
Malesef bu üstteki değişiklikte yetmiyor 🙂 Sitedeki resimleri vs. bunlarıda görebilmek için son bir SQL sorgusu çalıştırmak zorundasınız.
UPDATE wp_posts SET post_content = replace(post_content, 'http://www.eskisite.com', 'http://www.yenisite.com');
Not: eskisite.com yerine eski sitenizi yenisite.com yerine yeni sitenizi yazınız. “wp_” tablo ön ekinide kendi sitenize göre değiştirmeyi sakın unutmayın…
rooteto
6 Faydalı SQL sorgusunu anlatmış oldum vallahi başım ağrıdı 🙂 Parça parça yazdım inşallah düzgün birşey olmuştur.
Bunları yazarken yardım aldığım siteler var tabiki bu SQL sorgularını smashingmagazine‘de görmüştüm ama üzerinde durmadığımdan anlayamamıştım. Ancak Yakupgovler‘in sitesinde SQL sorgularını görünce birde kaynak olarak smashingmagazine‘deki 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 ederim.)
Kaynak: 8 Useful WordPress SQL Hacks
Eliniz dert görmesin sayın Sağlam..
SQL sorgu ile makalelerin permalinklerinde arama yaptırıp sonuçları delete yapmak mümkün müdür?
örneğin sorguda: http://rooteto.com/wordpress/6-faydali-wordpress-sql-sorgusu linkin içinde geçen “6-fayda” olarak sorgu yapsak ve sorguda çıkan bütün postları sil demek mümkünmüdür. bu sql sorgu hangi komutla yapılabilir.
yanıtınızı bekliyor olacağım…
Saygılar.
@disqus_WmwLQEy6Y2:disqus, sorguyu yazıyorum ancak veritabanında hata yapmamak için yedek almanı tavsiye ederim.
Öncelikle permalink _posts tablosu içerisinde post_name sütununda yer alıyor.
Yani sorgumuz şu şekilde olacak;
DELETE FROM `veritabaniadi`.`tablomuz` WHERE `post_name` LIKE ‘6fayda’
Eğer belirli bir cümle aratıcaksak % işaretini kullanıyoruz. Oda şu şekilde;
DELETE FROM `veritabaniadi`.`tablomuz` WHERE `post_name` LIKE ‘6fayda%’
1.satırda tamamı “6sayfa” ya eşit olması gerekiyordu ancak 2. satırdaki kodumuz da “6fayda…….” kelimeden sonra herhangi bir yazı gelebilir demek istedik.
Son olarak altta vermiş olduğum kodda ise başında veya sonunda kelimeler geçebilir ama içerisinde “6fayda” olanı bul ve sil dedik.
DELETE FROM `veritabaniadi`.`tablomuz` WHERE `post_name` LIKE ‘%6fayda%’
Hızlı yanıt için teşekkür ederim.
Şuan iş yerindeyim haftasonu yedekleri alıp denemeyi yapacağım üstadım.
Zaman ayırıp yanıtladığınız için çok teşekkürler…
İşlemi son verdiğiniz kod ile başarılı ve hatasız şekilde hallettim Sayın Sağlam..
tekrar Teşekkürler..
@disqus_WmwLQEy6Y2:disqus, rica ederim 🙂
Merhabalar Sayın Sağlam,
Uzmanlık gerektiren bir sorum olduğundan yine size danışma gereksinimi duydum.
SQL sorgusuyla POST atılmış konuların içinde ilk 1000 karakter sonrasını işaret ederek ek yapmak mümkün mü ?
Örneğin; bütün postların içinde 1000 karakter (ya da 40 kelimeden) sonrasına şu yazıyı ekle gibi.
Bu isteğim hayali bir düşünce mi bilemedim ama sormak istedim müsait olduğunuzda yanıtlamanız dileğiyle..
Saygılar.