WP_Query में URL से कस्टम डेटा के लिए उपयुक्त प्रवाह क्या है?


14

मेरे पास कई चरण की प्रक्रिया है जो जटिल क्वेरी को WP प्रश्नों में एकीकृत करती है। समस्या यह है - जितना गहरा मैं उतना अधिक फजी हो जाता हूं मैं उस पर बन जाता हूं कि यह कैसे काम करने वाला है और मैं आविष्कारशील होने के बजाय एक दिशानिर्देश का उपयोग कर सकता हूं (और खुद को खोदता हूं)।

मेरे पास सामान्य चरण (छद्म कोड, लेकिन वास्तविक के करीब):

  1. URL से मान प्राप्त करें (जैसे कुछ सरल person=1)
  2. प्रक्रिया मूल्य और कस्टम क्वेरी निर्देश संलग्न करें ( $relationship_query[] = array('relationship' => 'person_to_cat', 'object' => 1 );)
  3. अंतिम कस्टम क्वेरी निर्देशों को पुनः प्राप्त करें और उचित SQL निर्देश उत्पन्न करें

अब तक मेरे पास इस तरह के बहुत से रिश्ते (रिश्ते, वर्गीकरण, तारीखें) चल रहे हैं और यह नाजुक होता जा रहा है (कोड का एक कोना ऐसा मूल्य नहीं रखता जहां कोड के अन्य कोने इसे खोजने की उम्मीद करते हैं और सब कुछ अलग आता है)।

इतना बड़ा सवाल है - URL के माध्यम से WP में कस्टम डेटा को पास, प्राप्त, स्टोर और प्रोसेस करने के लिए उचित प्रोटोकॉल क्या है ?

छोटे हिस्से:

  • यह सुनिश्चित करने के लिए कि मैं WP इंटर्नल के साथ कैसे टकराऊं?
  • मैं कहां और कैसे मध्यस्थ डेटा संग्रहीत करता हूं?
    • queryऔर query_varsगुणों के बीच अंतर ? उन्हें कोड में लगभग समान उपयोग किया जाता है, फिर भी वे अलग-अलग मूल्यों और तरीकों को अपनाते हैं query_vars।

जवाबों:


6

मुझे लगता है कि आप जिस WP फ़ंक्शन की तलाश कर रहे हैं वह add_rewrite_tag है । इसका उद्देश्य आपके URL में कस्टम GET Params जोड़ना और इसे स्वचालित रूप से इसमें शामिल करना है query_vars।

उदाहरण के लिए, आप निम्नलिखित init हुक जोड़ सकते हैं:

add_rewrite_tag('%person%','([^&]+)');

Http://example.com?person=joe जैसे url के लिए , वैश्विक $wp_queryहोगा

$wp_query->query_vars['person'] = 'joe'

आप URL को प्रीटियर बनाने के लिए एक पुनर्लेखन नियम भी जोड़ सकते हैं , उदाहरण के लिए http://example.com/person/joe

add_rewrite_rule('^person/([^/]*)/?','index.php?person=$matches[1]','top');

अधिक जानकारी और उदाहरणों के लिए रीराइट एपीआई देखें ।


2
मैं (पिछले पर) कुछ समय के सभी प्रासंगिक कोड के माध्यम से पढ़ने के लिए मिल गया में WPऔर WP_Queryऔर जब तक वहाँ क्या हो रहा बहुत कुछ कर रहे हैं, मुझे लगता है कि add_rewrite_tag()WP कस्टम क्वेरी वर से अवगत कराने और इसके साथ अच्छी तरह से खेलने के लिए सबसे संक्षिप्त तरीका लगता है।
— रार्स्ट ऑक्ट

1
  1. किसी भी आरक्षित query_vars की जाँच करने के लिए wp- / class-wp.php देखें
  2. मुझे यकीन नहीं है कि आप मध्यस्थ डेटा से क्या मतलब है। क्या आप और अधिक व्याख्या कर सकते हैं?
  3. WP URL पर एक क्वेरी_string के आधार पर पृष्ठ को लोड करता है जो क्वेरी के रूप में अनुवाद होता है, फिर वे WP_Query द्वारा यह निर्धारित करने के लिए प्रक्रिया करते हैं कि किस क्वेरी_ का उपयोग किया जा रहा है।

उदाहरण: /? Pagename = के बारे में एक पृष्ठ लोड करके, WP क्वेरी स्ट्रिंग को संसाधित करेगा और यह पता लगाएगा कि क्वेरी का उपयोग किया जा रहा है।

एक और उदाहरण: /? बिल्ली = 1, /? श्रेणी_नाम = श्रेणीबद्ध और / श्रेणी / श्रेणीबद्ध एक ही क्वेरी_ ''


0

मुझे लगता है कि यह $_GET/ और के माध्यम से किया जाएगा $_POST, तो तदनुसार हेरफेर।

वैकल्पिक रूप से, डेटा के विशाल समूह को db में संग्रहीत करें और फिर url को एक आईडी पार्स करें

$data_id = $_GET['id'];

$data = $wpbd->get_results("SELECT * FROM wp_epic_table WHERE id=".$id);

स्पष्ट रूप से क्वेरी इतनी सरल नहीं होगी, इसमें बहुत सारे जोड़ शामिल हो सकते हैं और तालिकाओं में शामिल हो सकते हैं। यही कारण है कि मैं अपने पृष्ठों में से एक में, एक अद्वितीय आईडी पार्स तो MySQL के माध्यम से डेटा का निर्माण।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.