Class Tanımı : WP_Query
WordPress sistemi içerisinde temalarınızda, eklentilerinizde kullanabileceğiniz, hayli esnek bir class olan WP_Query
size kendinize özel bir Loop oluşturmanızı sağlar. Sistem dahilinde olan $wp_query
global tanımına müdahale etmeniz ve kullandığınız alanda istediğiniz düzeni gerçekleştirmenize katkıda bulunur. Aşağıda vereceğim sorgusal yapısıyla WordPress’e eklenti, tema geliştiren kişilerin favori classlarından biridir. Şahsen ben temalarda bu class’ı kullanmayı çok seviyorum.
Tıpkı daha önce anlattığım The Loop
alanı gibi bir kullanımı vardır. Tek farkı çağırıldığı anda istediğiniz veriyi dökmesidir.
WP_Query
ile while
kullanıldığında the_post()
fonksiyonuyla içerik çağırımı yapılacaksa, fonksiyon ve döngüs sonrasında wp_reset_postdata()
fonksiyonunun çağırılması gerekmektedir. Basit olarak WP_Query kullanımı;
Bir Loop döngüsü kullanmak istediğinizde şayet Wp_Query
kullanılacaksa basit şekile kullanımı şu şekilde olacaktır (WordPress Codex örneği).
// Sorgu
$the_query = new WP_Query( $args );
// Loop Döngüsü
if ( $the_query->have_posts() ) {
echo '<ul>';
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '<li>' . get_the_title() . '</li>';
}
echo '</ul>';
} else {
// Yazı bulunamadı
}
/* Orjinal yazı bilgisini sisteme geri verelim */
wp_reset_postdata();
Yukarıda yaptığımız WP_Query
içerisine $args
ile belirli parametreler gönderiyoruz ve gerekli çıktıyı bir önceki yazıda anlattığım get_the_title()
fonksiyonuyla çekiyoruz. Bu parametrelerle belirtilen çıktıyı sistemin gösterebilmesini sağlıyor. Sizi uyarırken bashettiğim gibi wp_reset_postdata();
fonksiyonuyla global veri çıktısını varsayılan haline döndürüyoruz ki sıkıntı yaşamdan çalışmaya devam etsin.
Wp_Query tam tanımı ve Parametreler;
Aşağıdaki tüm parametreler WP_Query
class’ı ile kullanılabilir durumdadır. Düzenlemek ve kullanmak sizin elinizde :)
$args = array(
//Sayfa ve Yazı parametreleri
'p' => 1,
'name' => 'hello-world',
'page_id' => 1,
'pagename' => 'sample-page',
'post_parent' => 1,
'post__in' => array(1,2,3),
'post__not_in' => array(1,2,3),
//Yazar Parametreleri
'author' => '1,2,3,',
'author_name' => 'admin',
//Kategori Parametreleri
'cat' => 1,
'category_name' => 'blog',
'category__and' => array( 1, 2),
'category__in' => array(1, 2),
'category__not_in' => array( 1, 2 ),
//Tür ve Durum Parametreleri
'post_type' => '',
'post_status' => '',
//Tür ve Durumların listesi aşağıdadır. Lütfen Buradan birini kullanın
'post_type' => array(
'post',
'page',
'revision',
'attachment',
'my-post-type',
),
'post_status' => array(
'publish',
'pending',
'draft',
'auto-draft',
'future',
'private',
'inherit',
'trash'
),
//Sıralama ve sıralama türü Parametreleri
'order' => 'DESC',
'orderby' => 'date',
'ignore_sticky_posts' => false,
'year' => 2012,
'monthnum' => 1,
'w' => 1,
'day' => 1,
'hour' => 12,
'minute' => 5,
'second' => 30,
//Etiket Parametreleri
'tag' => 'cooking',
'tag_id' => 5,
'tag__and' => array( 1, 2),
'tag__in' => array( 1, 2),
'tag__not_in' => array( 1, 2),
'tag_slug__and' => array( 'red', 'blue'),
'tag_slug__in' => array( 'red', 'blue'),
//Sayfalama Parametreleri
'posts_per_page' => 10,
'posts_per_archive_page' => 10,
'nopaging' => false,
'paged' => get_query_var('paged'),
'offset' => 3,
//Özel alan Parametreleri
'meta_key' => 'key',
'meta_value' => 'value',
'meta_value_num' => 10,
'meta_compare' => '=',
'meta_query' => array(
array(
'key' => 'color',
'value' => 'blue',
'type' => 'CHAR',
'compare' => '='
),
array(
'key' => 'price',
'value' => array( 1,200 ),
'compare' => 'NOT LIKE'
),
//Taksonomi Parametreleri
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'color',
'field' => 'slug',
'terms' => array( 'red', 'blue' ),
'include_children' => true,
'operator' => 'IN'
),
array(
'taxonomy' => 'actor',
'field' => 'id',
'terms' => array( 1, 2, 3 ),
'include_children' => false,
'operator' => 'NOT IN'
)
),
//İzin Parametreleri
'perm' => 'readable',
//Cache ile ilgili Parametreler
'no_found_rows' => false,
'cache_results' => true,
'update_post_term_cache' => true,
'update_post_meta_cache' => true,
);
$query = new WP_Query( $args );
WP_Query ile ilgili anlatacaklarım bu kadar. Bir sonraki yazımda query_posts
tanımıyla sizlerle olacağım.
Comments are closed.