मैं देखता हूं कि बहुत से लोग query_posts के बजाय pre_get_posts हुक का उपयोग करना पसंद करते हैं
वाह!
तो pre_get_posts
एक WP_Query
वस्तु को फ़िल्टर करता है जिसका अर्थ है कि आप जो कुछ भी आप कर query_posts()
सकते हैं वह आप के माध्यम से कर सकते हैं $query->set()
और $query->get()
। विशेष रूप से हम meta_query
विशेषता का उपयोग कर सकते हैं ( कोडेक्स देखें ):
$meta_query = array(
array(
'key'=>'featured',
'value'=>'yes',
'compare'=>'!=',
),
);
$query->set('meta_query',$meta_query);
लेकिन .. यह मूल 'मेटा क्वेरी' (यदि यह एक था) की जगह लेता है। इसलिए जब तक आप मूल मेटा क्वेरी को पूरी तरह से बदलना नहीं चाहते, मैं सुझाव देता हूं:
//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);
इस तरह हम मौजूदा मेटा क्वेरीज़ के साथ अपनी मेटा क्वेरी जोड़ते हैं।
आप ( या सभी को संतुष्ट करने वाले पोस्ट वापस करने relation
के $meta_query
लिए AND
या OR
कम से कम एक, मेटा क्वेरीज़) की संपत्ति सेट या करना चाह सकते हैं / कर सकते हैं ।
* नोट: इस प्रकार की क्वेरी 'विशेष रुप से प्रदर्शित' मेटा कुंजी के साथ पोस्ट लौटाएगी, लेकिन जिसका मूल्य नहीं है yes
। इसमें वे पद शामिल नहीं होंगे जहाँ 'विशेष रुप से प्रदर्शित' मेटा कुंजी मौजूद नहीं है। आप 3.5 में ऐसा कर पाएंगे ।