WordPress için kod yazan geliştirici arkadaşlara faydası olması amacıyla bu zamana kadar kullandığım WordPress SQL cümlelerini bir araya getirerek yayınlamaya karar verdim. Bazen WordPress’in standart kodları ihtiyacınızı karşılamadığı benim yaptığım gibi veritabanına direk müdahalelere mecbur kalabiliyorsunuz. İşte böyle durumlarda bu SQL cümleleri hayatınızı ve üzerinde çalıştığınız projeyi kurtarabilir ;)
WordPress Yazı Sürümlerini silmek
[php]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'[/php]
Kategoriye Göre En Çok Okunanlar
En güzel cümle ile başlamak istedim. Bildiğiniz gibi hangi yazının kaç kez okunduğunu öğrenmek için tüm dünyada en çok kullanılan eklentilerden birisi Hakan Demiray‘ın Sayfa Sayaç eklentisidir. Bu eklenti ile sitenizde en çok okunan yazıları da gösterebilirsiniz. Son çalıştığım projede benden görüntülenen yazının bulunduğu kategorideki en çok okunanları listelemem istendi. Bende bunun üzerine Hakan’ın eklentisine ufak bir yama yaptım. Yama ile beraber artık ID’sini belirttiğim kategorideki en çok okunanları seçebiliyorum. Bunu buradan yayınlayarak Hakan’a da eklentiyi güncellemesi konusunda bir fikir verebilirsem ne mutlu bana ;)
[php]$tp = $wpdb->prefix;
$SQL = "SELECT *
FROM {$tp}posts, {$tp}posts_okunma, {$tp}term_relationships, {$tp}term_taxonomy
WHERE {$tp}posts.ID = {$tp}term_relationships.object_id
AND {$tp}term_relationships.term_taxonomy_id = {$tp}term_taxonomy.term_taxonomy_id
AND {$tp}term_taxonomy.taxonomy = ‘category’
AND {$tp}term_taxonomy.term_id = ‘{$kat}’
AND {$tp}posts.ID = {$tp}posts_okunma.postID
AND post_status = ‘publish’
AND post_type = ‘post’
ORDER BY {$tp}posts_okunma.sayac_toplam
DESC LIMIT 0, $limit";[/php]
En Çok Yorumlananlar
Aşağıdaki kod ile en çok yorumlanan yazıları çekebilirsiniz.
[php]$cokyorumalan = "SELECT $wpdb->posts.ID, post_title, post_name, post_date, COUNT($wpdb->comments.comment_post_ID) AS ‘comment_total’ FROM $wpdb->posts LEFT JOIN $wpdb->comments ON $wpdb->posts.ID = $wpdb->comments.comment_post_ID WHERE comment_approved = ‘1’ AND post_date_gmt < ‘".gmdate("Y-m-d H:i:s")."’ AND post_status = ‘publish’ AND post_password = ” GROUP BY $wpdb->comments.comment_post_ID ORDER BY comment_total DESC LIMIT $limit";[/php]
Kategorinin Yazıları
Belirli bir kategorinin yazılarını çekmek istiyorsanız aşağıdaki sorguyu kullanabilirsiniz. $kat değişkeni ilgili kategorinin ID’sidir.
[php]$tp = $wpdb->prefix;
$yazisorgusu = "SELECT ID, {$tp}term_taxonomy.term_id as category_id, id AS post_id
FROM {$tp}posts, {$tp}term_relationships, {$tp}term_taxonomy
WHERE {$tp}posts.ID = {$tp}term_relationships.object_id
AND {$tp}term_relationships.term_taxonomy_id = {$tp}term_taxonomy.term_taxonomy_id
AND {$tp}term_taxonomy.taxonomy = ‘category’
AND {$tp}term_taxonomy.term_id = ‘".$kat."’
AND post_status = ‘publish’
AND post_type = ‘post’
ORDER BY id DESC LIMIT 0, $limit";[/php]
Özel Alanda Arama
WordPress’in oldukça faydalı bir yanı da özel alanlarıdır. Bu özel alanlardan sadece birinde aşağıdaki kod ile arama yapabilirsiniz.
[php]$querystr = "
SELECT wposts.*
FROM $wpdb->posts wposts,
$wpdb->postmeta wpostmeta
WHERE wposts.ID = wpostmeta.post_id
AND wpostmeta.meta_key = ‘candy’
AND wpostmeta.meta_value = ‘$candy’
AND wposts.post_status = ‘publish’
AND wposts.post_type = ‘post’
ORDER BY wposts.post_date DESC
";[/php]
Birden Çok Özel Alanda Arama
Daha önce şurada bahsetmiştim ama konusu gelmişken buraya da yazmanın bir sakıncası olmaz sanırım.
[php]$querystr = "
SELECT wposts.*
FROM $wpdb->posts wposts,
$wpdb->postmeta wpostmeta,
$wpdb->postmeta wpostmeta2
WHERE wposts.ID = wpostmeta.post_id
AND wposts.ID = wpostmeta2.post_id
AND wpostmeta.meta_key = ‘candy’
AND wpostmeta.meta_value = ‘$candy’
AND wpostmeta2.meta_key = ‘mood’
AND wpostmeta2.meta_value = ‘$mood’
AND wposts.post_status = ‘publish’
AND wposts.post_type = ‘post’
ORDER BY wposts.post_date DESC
";[/php]
Sizin de bildiğiniz güzel cümleler varsa ve iletirseniz bu arşivi genişletebiliriz.
çok faydalı olmuş, eline sağlık ;) Eklenti için herkes ne diyorsa haklı ama inan uğraşasım gelmiyor :D
İyi ya Hakancım bende uğraşmayasın diye yazdım. Hatta bir ara sana direk fonksiyonu da göndereyim ;)
Saygısızlık olarak algılamazsanız bir atasözü ile size laf dokunduracağım: “Ele verir talkımı; kendi yutar salkımı”. Benim severek kullandığım Ylink eklentisi nicedir güncellenmiyor. Bence çok kullanışlı bir eklenti. Hata geliştirlirse daha da iyi olacaktır kaanatindeyim.
Haklısınız ama bir de şu açıdan bakmak lazım. Biz yoğunluğumuzu hep daha faydalı olacağını düşündüğümüz işlere veriyoruz. ylink fazla kullanılmayınca başka yerlere yöneldik doğal olarak. Yine de size de sonuna kadar hak veriyorum.
Paylasım ıcın tesekkurler.
İnsanın birikimlerini paylaşması kadar güzel ve samimi birşey olamaz, takdir ediyorum…
Teşekkür ederim ;)
WordPress SQL Sorguları linkinde wordpress düzenlemesi yaparken işinizi hızlandıracak ve kolaylaştıracak, özellikle veritabanında gereksiz şişkinliğe yol açan verilerin temizlenmesinde oldukça faydalı sql sorguları yer almakta.
Bence;En kolay ve En iyi bloglama sitesi WordPress Sizin sayenizde bir çok şeyde öğreniyoruz.Site yapan arkadaşlar size ve sizin gibi Öğretici site sahiplerine kızmasın ha;Size çok teşekkür ederim.
çok güzel. bize çok faydalı oluyorsunuz. buna benzer kodları eklerseniz çok sevinirim :)
Paylaşım güzel hoşta sql'u temaya nasıl yazdırıcaz örnek "Kategoriye Göre En Çok Okunanlar"
hangi dosyaya ve ne şekilde ekliyeceğimizi paylaşırsanız sevinirim.
merhaba
önceki wp temada resimler yazı içinde <img src="" alt="" width="0" height="0" />koduile yeni temada ise resim özel alanından çagrılıyor resim sayısı oldukça çok tema geçişinde bunu toplu olarak yapabileceğim kısa bir yöntem varmıdır yada hangi yolu izlemeliyim
tşk
iyi çalışmalar
Merhaba arkadaşlar WordPress'de biriken bir bölümde 1.000 üzeri konu var olduğunu varsayalım. bunu manuel silmek cok meşakkatli bir iş. Bu yüzden PHPMYADMİN üzerinden sql kodu ile mevcut kategorideki bütün konuları silmenin komutunu bilen arkadaşlar paylaşırsa sevinirim.