Birçok kişinin query_posts yerine pre_get_posts hook kullanmayı tercih ettiğini görüyorum.
Yuppi!
Yani pre_get_posts
bir filtre WP_Query
nesnesi anlamına şey aracılığıyla yapabileceğini query_posts()
sen aracılığıyla yapabilirsiniz $query->set()
ve $query->get()
. Özellikle şu özelliği kullanabiliriz meta_query
(bakınız Kodeksi ):
$meta_query = array(
array(
'key'=>'featured',
'value'=>'yes',
'compare'=>'!=',
),
);
$query->set('meta_query',$meta_query);
Ama .. bu orijinal 'meta sorgusu'nun yerini alır (eğer öyleyse). Bu yüzden, orijinal meta sorgusunu tamamen değiştirmek istemediğiniz sürece, şunu öneririm:
//Get original meta query
$meta_query = $query->get('meta_query');
//Add our meta query to the original meta queries
$meta_query[] = array(
'key'=>'featured',
'value'=>'yes',
'compare'=>'!=',
);
$query->set('meta_query',$meta_query);
Bu şekilde meta sorgunuzu mevcut meta sorgularının yanına ekleriz.
Sen / ayarlamak istediğiniz olmayabilir relation
özelliği $meta_query
için AND
veya OR
(bütün tatmin veya en az bir meta sorguları dönüş için mesajların).
* Not: Bu tür sorgu, 'özellikli' meta anahtarına sahip, ancak değeri olmayan gönderileri döndürür yes
. 'Seçili' meta anahtarın bulunmadığı gönderileri içermez. Bunu 3.5'te yapabilirsin .