Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

वर्डप्रेस pre_get_posts काम नहीं कर रहा

आप दस्तावेज़ीकरण pre_get_post . पर पा सकते हैं यहां फ़िल्टर करें http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts

ऐसा लगता है कि समस्या वास्तव में यह है कि आप पोस्ट_आईड्स को कैसे सेट कर रहे हैं जिसे आप पुनः प्राप्त करना चाहते हैं। यदि आप ऊपर दिए गए लिंक को देखें, तो आप विभिन्न मान देख सकते हैं जिन्हें $query पर सेट किया जा सकता है ऑब्जेक्ट जो फ़िल्टर को पास किया जाता है, और post_id उनमें से एक नहीं है, इसलिए जब आप इसे सेट करते हैं तो यह "काम करता है", और जब आप p सेट करते हैं तो "काम नहीं करता" . उत्तरार्द्ध एकल पोस्ट आईडी के लिए है, इसलिए यदि आप केवल 100 चाहते हैं, तो आप $query->set('p', 100) का उपयोग करेंगे . यदि आप उन परिणामों को वापस करना चाहते हैं जहां पोस्ट आईडी एक सरणी में है, तो आप $query->set('post__in', array(100, 120)) का उपयोग करें। . आपका एसक्यूएल कोड सिर्फ आईडी लौटा रहा है, इसलिए वस्तुओं को वापस करने के बजाय, आप सीधे एक सरणी प्राप्त कर सकते हैं - मुझे लगता है कि शीर्षक और print_r गूंज रहा है लाइनें सिर्फ डिबगिंग कर रही हैं:

// get results as a numeric array
$post_ids = $wpdb->get_results($request, ARRAY_N);
// pass post id array to $query
$query->set( 'post__in', $post_ids );

यदि $query . पर मौजूदा परस्पर विरोधी पैरामीटर सेट हैं, तो भी आपको परिणाम नहीं मिल सकते हैं . आप इन मानों को var_dump($query->query_vars) . से जांच सकते हैं और कोई भी सेट करें जो एक खाली स्ट्रिंग के विरोध में हो सकता है - आपके मामले में $query->set( 'm', '' );



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - सभी क्रमपरिवर्तन दिखाएं?

  2. VB6 (10060) के साथ दूरस्थ MySQL से कनेक्ट नहीं हो सकता

  3. विदेशी कुंजी बनाने के लिए MySql में ट्रिगर का उपयोग कैसे करें

  4. मैं mysql में जॉब या इवेंट कैसे बना सकता हूं?

  5. MySQL में एक स्ट्रिंग को "अनहेक्स" करने के 3 तरीके