Erhan Yakut Software Developer @Binalyze | Founder @Passwall | Golang Enthusiast | Open Sorcerer

WordPress SQL Cümleleri

2 min read

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.

Erhan Yakut Software Developer @Binalyze | Founder @Passwall | Golang Enthusiast | Open Sorcerer