2013-08-23 13 views
22

हल हुआ: नीचे उत्तर देखें।meta_query, दोनों संबंधों और AND और दोनों का उपयोग करके कैसे खोज करें?


मेरे पास कस्टम पोस्ट प्रकार, पुस्तकें हैं। इसमें कई कस्टम फ़ील्ड हैं, अर्थात्; शीर्षक, लेखक, GENRE, रेटिंग। मैं नीचे अपना मेटा_क्वायरी कोड कैसे ठीक करूं ताकि केवल उन पुस्तकों जिनमें कस्टम फ़ील्ड में खोज शब्द हो; शीर्षक, लेखक, शैली; मेरे खोज फ़ॉर्म में निर्दिष्ट रेटिंग के साथ, परिणामों में प्रदर्शित हो जाता है?

मैंने एक कस्टम खोज फ़ॉर्म बनाया है; एक पाठ क्षेत्र जो शीर्षक, लेखक और शैली के माध्यम से खोज करेगा; और एक ड्रॉपडाउन जो रेटिंग की खोज करेगा। मेटा_क्वायरी जो मैंने नीचे बनाई है केवल शीर्षक, लेखक और शैली के माध्यम से खोजती है। लेकिन अब मैं रेटिंग के लिए कोड जोड़ने के तरीके में फंस गया हूं।

यह कैसे मैं नेत्रहीन meta_query संबंध के साथ यह कल्पना की है: (शीर्षक या लेखक या शैली) और रेटिंग

$args = array(
     'relation' => 'OR', 
      array(
      'key' => 'title', 
      'value' => $searchvalue, 
      'compare' => 'LIKE' 
     ); 
      array(
      'key' => 'author', 
      'value' => $searchvalue, 
      'compare' => 'LIKE' 
     ); 
      array(
      'key' => 'genre', 
      'value' => $searchvalue, 
      'compare' => 'LIKE' 
     ); 
), 
     array(
     'relation' => 'AND', 
      array(
      'key' => 'rating', 
      'value' => $ratingvalue, 
      'compare' => '=', 
      'type' => 'NUMERIC' 
     )); 

मैं बहुत आपकी मदद और सलाह की सराहना करेंगे।

+0

कृपया लिंक http://wordpress.stackexchange.com/questions/35683/meta-query-with-and-or http://codex.wordpress.org/Class_Reference/WP_Meta_Query –

+0

धन्यवाद देखो! तो अगर मैं मेटा_क्वायरी के साथ ऐसा नहीं कर सकता, तो क्या कोई और तरीका है कि मैं इसे कैसे कर सकता हूं? –

+0

कुछ उदाहरण इस लिंक पर आखिरी बार परिभाषित करते हैं। http://codex.wordpress.org/Class_Reference/WP_Meta_Query –

उत्तर

36

मुझे कुछ मदद के साथ समाधान मिला। नीचे दिया गया कोड पूरी तरह से काम किया।

$args => array(
     'relation' => 'AND', 
     array(
      'relation' => 'OR', 
      array(
       'key' => 'title', 
       'value' => $searchvalue, 
       'compare' => 'LIKE' 
      ), 
      array(
       'key' => 'author', 
       'value' => $searchvalue, 
       'compare' => 'LIKE' 
      ), 
      array(
       'key' => 'genre', 
       'value' => $searchvalue, 
       'compare' => 'LIKE' 
      ) 
     ), 
     array(
      'key' => 'rating', 
      'value' => $ratingvalue, 
      'compare' => '=', 
      'type' => 'NUMERIC' 

     ) 
    ) 
); 
+2

यह काम नहीं करना चाहिए - यह WP_Meta_Query द्वारा समर्थित नहीं है। Http://wordpress.stackexchange.com/questions/75079/nested-meta-query-with-multiple-relation-keys – markd

+0

हां, यह वास्तव में काम नहीं कर रहा है। दोनों संबंधों का उपयोग करने के लिए एक स्थायी समाधान की आवश्यकता है। यह बहुत जरूरतमंद है। –

+3

WP 4.1 में, इस उत्तर की तरह नेस्टेड मेटा क्वेरी अब काम करनी चाहिए, यहां अधिक जानकारी: https://make.wordpress.org/core/2014/10/20/update-on-query-improvements-in-4-1/ – mfink

1

थोड़ा परीक्षण और त्रुटि के बाद मुझे इसका समाधान मिल गया। यह तार्किक है मेरा मतलब है कि meta_query फ़ील्ड "कुंजी" के लिए सरणी का समर्थन नहीं करता है, लेकिन सरणी को "कुंजी" में दे रहा है, मुझे सही समाधान मिल रहा है। मैं पागल हो सकता हूं लेकिन यह आकर्षण की तरह काम कर रहा है।

$args => array(
    'relation' => 'AND', 
    array(
     'key' => array('title','author','genre',), 
     'value' => $searchvalue, 
     'compare' => '=' 
    ), 
    array(
     'key' => 'rating', 
     'value' => $ratingvalue, 
     'compare' => '=', 
     'type' => 'NUMERIC' 

    ) 
) 

आपको केवल "ट्रिम()" के लिए चेतावनी मिलती है क्योंकि हम स्ट्रिंग के बजाय सरणी पार कर रहे हैं। उस चेतावनी को दबाएं या अगर आपको बेहतर समाधान मिल जाए तो कृपया कुछ जोड़ें।

+0

मैं इस कुंजी => सरणी() हैक का उपयोग कर रहा था, हालांकि WP 4.1 ऐसा लगता है कि यह अब 'अनौपचारिक' समर्थित नहीं है। सौभाग्य से मेटा_क्वायरी के लिए 4.1 अपडेट अब चुने गए उत्तर को सही तरीके से काम करने की अनुमति देते हैं। – mfink

संबंधित मुद्दे