Yeni yapısı ile çok çok konuştuğumuz yeni platformumuz WordPress 3.7 için date query özelliğinin developerları çok heyecanlandıracağından bahsetmiştim sürüm notlarını içeren yazımda. İleriki dönemde de konu ile alakalı bir makale hazırlayacağımı yazmıştım. Dün bir projenin bir kısmında geliştirme yaptığım esnada bu yeni yapıyı kullanma şansım oldu. Ve notlar ile birlikte detayları bu yazıya toplamaya karar verdim. İyi kullanımlar.
Öncelikle sizleri @nacin‘in trunk sayfasında alakalı yapı ile yaptığı değişikleri gözlemlemeniz için çalışma dosyalarına bakmanızı öneririm. Link burada. Bununla birlikte gelen wp_week_query gibi hareketli yeni query yapılarının olduğunu da kestirebiliyoruz. Akabinde az sonra oluşturacağımız örnek sorgular ile de daha açıklayıcı anlamış olacaksınız.
Belli saatler arasındaki yazıları listelemek
wp_date_query ile belirli saatler arasında yayınladığınız yazıları listelemek için örnek bir yapı hazırlayalım şimdi. Mesela sabah 9 ile akşam 5 arasında yayına alınmış yazıları bastırmak için hazırladığım örnek query sorgusunu inceleyelim…
// Son eklenen 10 yazı için
// sabah 9 akşam 5 arası olan içerikler
$sekiz_saatlik_yazi = new WP_Query( array(
'date_query' => array(
array(
'hour' => 9,
'compare' => '>=',
),
array(
'hour' => 17,
'compare' => '<=',
),
array(
'dayofweek' => array( 2, 6 ),
'compare' => 'BETWEEN',
),
),
'posts_per_page' => 10,
) );Daha çok meta alanları için karşılaştığımız compare array önermesinin burada sıklıkla kullanılacağı veya aynı mantıkla kullanılacağını görmek olası. Sorgu yapısı olarak wp_new_query ile tamamen aynı sadece string içindeki değerleri bir kaç farklılık gösteriyor hepsi o kadar. Başka örnekler ile konumuzu pekiştirmeye yönelik çalışmaları inceleyelim isterseniz ;
Bir güne ait yazıları listelemek
$birgunluk_yazilar = new WP_Query( array(
'date_query' => array(
array(
// String - strtotime()
'after' => 'June 1st, 2013',
// veya array dondurebilirsiniz
'before' => array(
'year' => 2013,
'month' => 8,
'day' => 31,
),
'inclusive' => true,
),
),
'posts_per_page' => -1,
) );Bir yıl önceki yazıları düzenlenme zamanına göre bastırmak
Bir yıl önce eklenen yazıları düzenlenme zamanına göre listeletmek içinde daha başka bir örnek hazırlayabiliriz. Mesela;
$yillikyazilar = new WP_Query( array(
'date_query' => array(
array(
'column' => 'post_date_gmt',
'before' => '1 year ago',
),
array(
'column' => 'post_modified_gmt',
'after' => '1 month ago',
)
),
'posts_per_page' => -1,
) );Belli zaman aralığındaki yorumları date_query ile listelemek
Bu özelliğin / class’ın çok heyecan verici olduğunu yinelemeye gerek yok. Oldukça basit kullanımı ve geniş kullanım alanı sayesinde aynı string değerlerini yazılar yerine yorumlar içinde listeleyebiliriz.
$yorumlar = get_comments( array(
'post_ID' => 123,
'date_query' => array(
array(
'after' => '1 week ago',
),
),
) );Yazı id numarası 123 olan yorumları 1 haftadan sonrakiler olmak üzere bu şekilde bastırmamız mümkün oluyor.
Date query ile alakalı tüm argümanları da şu şekilde listeleyebiliriz.
'date_query' => array(
'column' => 'özelleştirilebilir, sütun veya query, varsayılanı post_date',
'compare' => 'özelleştirilebilir, bakınız WP_Date_Query::get_compare()',
'relation' => 'özelleştirilebilir, OR veya AND, varsayılan AND',
array(
'column' => 'örnekler yukarıda',
'compare' => 'örnekler yukarıda',
'after' => 'bakınız WP_Date_Query::build_mysql_datetime()',
'before' => 'bakınız, see WP_Date_Query::build_mysql_datetime()',
'inclusive' => 'boolean, after/before için, eşleşen veya eşleşmeyen',
'year' => '4 basamaklı int',
'month' => 'int, 1-12',
'week' => 'int, 0-53',
'day' => 'int, 1-31',
'hour' => 'int, 0-23',
'minute' => 'int, 0-60',
'second' => 'int, 0-60',
),
array(
...
),
..
),Umarım açıklayıcı ve baş ucu niteliği bir başka wordpress temaları için geliştirdiğimiz ve arşivimize dahil ettiğimiz
wordpress kod bankası yazısı eklemiş olmuşumdur. Güle güle kullanın.
Mutlu kodlamalar.
Kaynak :
http://www.fatihtoprak.com/wordpress...kullanimi.html
