Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Theme Development
Code

वर्डप्रेस लूप के लिए शुरुआत की मार्गदर्शिका

by
Difficulty:BeginnerLength:MediumLanguages:

Hindi (हिंदी) translation by Ashish Rampal (you can also view the original English article)

लूप वर्डप्रेस के लिए अविश्वसनीय आधार है यह सबसे पहले (और संभवत: सबसे आसान) चीज है, जिसे ज्यादातर नए themer मॉडिफाई करना चाहते हैं... और बेसिक बातें जानने के बाद आप इसके साथ अविश्वसनीय रचनात्मक चीजे प्राप्त कर सकते हैं। आज, हम हर किसी के लिए फाउंडेशन तैयार करने जा रहे हैं जो लूप के लिए नए हो या जिसने कभी भी थोड़ा और जानना चाहा हो की यह काम कैसे करता है।


Layman का निरिक्षण

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

layman की शर्तों में, लूप कोड का एक ब्लॉक है जो सभी जानकारी को प्रदर्शित करता है जो कि WordPress के पोस्ट या पेज के बारे में है. जैसा कि नाम से पता चलता है, यह प्रत्येक पोस्ट के माध्यम से लूप करता है जो इसे डेटाबेस में क्रमिक रूप से मिलता है (एक, फिर दूसरा, फिर दूसरा), इसलिए वह कई पदों के बारे में सूचनाओं को सप्लाई कर सकता है।

इससे पहले कि हम कोड में डाइव् करें, चलो देखते हैं की लूप क्या करता है। इसके तीन महत्वपूर्ण हिस्से हैं:

  1. लूप को शुरू करना
  2. लूप में पाए गए प्रत्येक पोस्ट/पेज के साथ कुछ करना।
  3. लूप को बंद करना।

यह बहुत सरल है, है ना? लूप, डिफ़ॉल्ट रूप से, वह सब कुछ प्राप्त करता है जो संभवत: यह ढूंढ सकता है... इसलिए ध्यान देने योग्य एक और टुकड़ा है: the query। query वो है जिसे हम पोस्ट के सम्पूर्ण stack को फ़िल्टर करने के लिए प्रयोग करते हैं ताकि हम वो प्राप्त कर सकें जो हम ढूंढ रहे हैं। तो, हमारे "layman's का मॉडल" है की जब हम कुछ इस तरह से विशिष्ट पोस्ट्स के सेट को पाना चाहते हैं:

  1. परिभाषित करें कि हम क्या खोज रहे हैं।
  2. लूप शुरू करें
  3. लूप में पाए गए प्रत्येक पोस्ट/पेज के साथ कुछ करो।
  4. लूप को बंद करो।

यदि आपने पहले कभी भी PHP के साथ काम किया है, तो आप while फ़ंक्शन से परिचित होंगे जो सामान्यतः डेटाबेस query के माध्यम से लूप के लिए उपयोग किया जाता है और हर डेटाबेस row को मैन्युअल रूप से एंटर किए बिना डायनामिक रूप से डेटाबेस की जानकारी प्रदर्शित करता है non-PHP'ers के लिए, while फंक्शन एक भली लाइब्रेरियन के रूप में कार्य करता हैं जो आपको डेटाबेस से सभी चीजें ला कर देती हैं, एक समय में एक एंट्री।

अब हम उस पर एक नज़र डालते हैं कि "layman का मॉडल" वास्तविक कोड में किस तरह दिखता है:

मैं उदाहरण से सबसे अच्छा सीखता हूं, तो बस वर्डप्रेस की डिफ़ॉल्ट Twenty ten थीम में चलें और देखें की लूप वहां क्या कर रहा है।


सेक्शन 1 वर्डप्रेस Twenty Ten थीम

वर्डप्रेस में एक डिफ़ॉल्ट थीम है जो प्रत्येक वर्डप्रेस इंस्टॉलेशन के साथ आती है और डिफ़ॉल्ट रूप से activated होती है। इस साल की थीम को Twenty Eleven कहा जाता है, लेकिन हम पिछले साल की थीम, Twenty Ten का उपयोग हमारे उदाहरण के रूप में करेंगे क्योंकि यह अपनी फाइल में लूप को अलग करता है (जो हमारे लेसन को थोड़ा आसान बनाता है)। यदि आप wp-content/themes/twentyten पर नेविगेट करते हैं तो आप एक फ़ाइल संरचना देखेंगे जैसे कि हम नीचे देखें रहे हैं:

Twenty Ten अन्य थीम फ़ाइलों से लूप को अलग रखता है। Index.php खोलें और निम्नलिखित कोड को नोट करें:

हम जल्द से जल्द रिक्वेस्ट कर रहे कोड के टुकड़े करेंगे, लेकिन यह जानना जरूरी है कि यह सब कुछ पेज लूप को ही रिक्वेस्ट कर रहा है- index.php यदि आप पहले ही PHP से परिचित हैं, तो include() वर्डप्रेस फंक्शन get_template_part() के समान है। यह भी पूरी तरह स्वीकार्य है की लूप के जरिये सभी कोड को निकालें - index.php और इसे ऊपर दिए गए कोड के स्थान पर रख दें। यह उसी बात को पूरा करेगा। लूप किसी भी पेज में मौजूद रह सकता है, और इसके लिए अलग पेज की जरूरत नहीं है।

हम अब loop.php खोलने जा रहे हैं और जांच करेंगे की कोर लूप क्या करता हैं।

loop.php का पहला भाग pagination तैयार कर रहा है, लेकिन अगर आप लाइन 31 तक नीचे स्क्रॉल करते हैं - तो हम एक महत्वपूर्ण एलिमेंट देखेंगे: एक if स्टेटमेंट जो की यह पूछती है की क्या पोस्ट्स मौजूद हैं। यह कोड कहता है "यदि कोई पोस्ट नहीं है, तो एक संदेश दिखाया जाए जिसमे लिखा हो की कोई भी नहीं है"।

नीचे लाइन 56 पर जाएँ और आप वहां लूप का एक और महत्वपुर्ण एलिमेंट देखेंगे:

यह while स्टेटमेंट है जिसके बारे में मैने पहले उल्लेख किया था। यह ख़ास तौर पर ऐसे पढ़ा जा सकता है "जब तक की कोई पोस्ट मौजूद है, इस लूप को चालु रखें।" इसके एकदम बाद आप देखेंगे the_post()। यह फ़ंक्शन सभी पोस्ट जानकारी निकालता है ताकि हम स्टैण्डर्ड वर्डप्रेस टैग्स का उपयोग करते हुए पोस्ट की जानकारी दिखा सकें (इस पर और बाद में)।

फिर लाइन 173 पर लूप को बंद करने के लिए, आप बस एक endwhile देखेंगे। असली जादू और लूप की उपयोगिता इन लाइनों के बीच में है।

हर बार जब आप एक ब्लॉग पोस्ट करना चाहते हैं तो HTML को अपडेट करने की कल्पना करें। यह अविश्वसनीय रूप से दर्दनाक होगा और मैं सोचता हूं कि यह आपको ब्लॉग पर हतोत्साहित (discourage) करेगा। मैं भी परेशान नहीं होता। लूप आपको एक ब्लॉग पोस्ट को डेटाबेस में दर्ज करने और कंटेंट को उस फॉर्मेट में निकाल कर देता है जिसे आप एक बार डिज़ाइन करते हैं, और यह इसे हमेशा फॉलो करेगा। आपको जानने के लिए केवल एक चीज की जरूरत है कि जो आप दिखाना चाहते हैं उसे दिखाने के लिए लूप में कैसे मैनिपुलेट करें और जिस कंटेंट को आप दिखाना चाहते हैं आप कैसे दिखा सकते हैं।


सेक्शन 2 कंटेंट को प्रदर्शित करना

इस ट्यूटोरियल के शेष भाग में, हम जो भी जादू करेंगे वह while के बाद और endwhile से पहले का होगा।

वर्डप्रेस लूप में दी गई जानकारी को प्रदर्शित करना वाकई में आसान है। मैं WordPress Codex के Template Tags आर्टिकल को पढ़ने का पुरजोर सुझाव देता हूं; यह आपको उन सभी टैग को दिखाएगा जो आप लूप में उपयोग कर सकते हैं। मैं आपको वर्डप्रेस की Twenty Ten थीम में शामिल कुछ चीजें पेश करूंगा।

सबसे पहले the_ID() है. यह उस पोस्ट की अनूठी ID है, कोई पोस्ट या पेज ID शेयर नहीं करेगा। यदि आपके पास URL rewrite ऑन नहीं है, तो आप इस ID को पोस्ट के URL में देखेंगे। इस उदाहरण में, इसे div id में जोड़ना उपयोगी है ताकि CSS में इस एक पोस्ट को बाकी सभी पोस्ट्स के फॉर्मेट को इफ़ेक्ट किये बिना स्टाइल दे सकें। अगला post_class है जो एक CSS क्लास जोड़ देगा, जो इस प्रकार के पोस्ट टाइप से correlate होगा। अगर यह एक पोस्ट है, तो आपके पास पोस्ट की क्लास है। यदि यह एक अटैचमेंट है, तो आपके पास अटैचमेंट की क्लास होगी। post_class() पर अधिक जानकारी के लिए codex पढ़ें;

अगली पंक्ति पर, आप दो व्यापक रूप से उपयोग किए जाने वाले टैगों को देखेंगे। पहला है

यह आम तौर पर एक <a href> element में व्रैप किया जाता है क्योंकि यह raw permalink प्रिंट करता है: http://yoursite.com/?p=123 उस लिंक पर पोस्ट द्वारा हमेशा पहुंचा जा सकता है - जो कभी-कभी बहुत अच्छा नहीं होता है - जब आप the_permalink() टैग का उपयोग करते हैं तो स्वचालित रूप से यह echo होता है।

उस टैग के ठीक बाद, आप देखेंगे:

यह जैसा की नाम बता रहा है, पोस्ट का टाइटल है। पोस्ट करते समय, जो भी आपने टाइटल के रूप में रखा था वह यहां दिखाई देगा।

नीचे लाइन नंबर 109 पर चलते हुए, आपको कुछ कंडीशनल टैग दिखाई देंगे जो अलग-अलग खींचने के लिए हमें फायदा देंगे।

यह ज़ोर से पढ़ा जा सकता है जैसे "यदि हम वर्तमान में archive पेज या सर्च पेज पर हैं, तो कंटेंट को निम्नानुसार प्रदर्शित करें"। यह इसके तुरंत बाद है

लेकिन प्रतीक्षा करें - इस कंडीशन के दूसरे भाग में आप देखेंगे:

अंतर क्या है? the_excerpt() पोस्ट के टेक्स्ट की एक वर्डप्रेस या यूजर परिभाषित मात्रा को निकालने जा रहा है।  जो archives या searches पर सहायक होता है, ताकि जब यूजर केवल पढ़ना जारी रखने के लिए उकसाने वाला हो तो पूरे पोस्ट return नहीं होता और देखें कि क्या वे पढ़ना जारी रखना चाहते हैं। the_content () पूरे फॉर्मेट किये गए पोस्ट को टैग तक पुल करने जा रहा है। जो कुछ पेजो पर आर्टिकल प्रदर्शित करते समय उचित होता है, जब वह ध्यान के लिए प्रतिस्पर्धा नहीं करता है।

ऊपर दिए गए, लूप के कुछ अन्य टैग हैं जिन्हें आपको पता होना चाहिए। पहली पंक्ति उन सभी केटेगरी को बाहर पुल करेगी जो पोस्ट से जुडी हुई है, और उन्हें एक अल्पविराम सीमांकक (comma delimiter) के साथ प्रदर्शित किया जाता है। दूसरा पोस्ट के साथ जुड़े टैग के साथ ऐसा ही करेगा।


सेक्शन 2 लूप को जोड़ता है

अब जब हम जानते हैं कि लूप के भीतर हमारे कंटेंट को कैसे प्रदर्शित किया जाता है, तो लूप के साथ दो दो हाथ करते हैं ताकि हम उसे वो return करा सकें, जो हम चाहते हैं।

लूप को मैनिपुलेट करने का पहला तरीका, सीधे लूप को एडिट करना है। जब तक आप एक क्वालीफाइंग query_posts() फ़ंक्शन जोड़ना चाहेंगे, ताकि यह कुछ ऐसा दिखे:

query_posts में, आप उन आर्ग्यूमेंट्स को परिभाषित करने में सक्षम होते हैं जो आपको अधिक नियंत्रण प्रदान करते हैं जिसे आप प्रदर्शित करने जा रहे हैं। उपर्युक्त कंडीशनल के साथ, मैंने कहा है कि मैं केवल baseball नामक केटेगरी से पोस्ट पुल करना चाहता हूं और मैं केवल पेज पर एक समय में 10 प्रदर्शित करना चाहता हूं। यह वास्तव में सरल है क्योंकि आप केवल कोड की एक पंक्ति जोड़ रहे हैं।

ऐसा करने का दूसरा तरीका एक वेरिएबल परिभाषित करना होगा जो डेटाबेस के लिए एक नई क्वेरी बनाता है और अनिवार्यतः एक नया लूप।

हमारा while स्टेटमेंट तब $my_query ऑब्जेक्ट से क्लासेज को रिक्वेस्ट करता है, इसलिए अब ऐसा दिखता है:

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

वर्डप्रेस अपने codex में एक लूप को आल्टर करने का एक तीसरा उदाहरण दिखाता है जो मुझे लगता है कि यह एक बहुत ही उचित है जो कि आपको बेहतर करेगा। इसे nesting कहा जाता है। Nesting मूल रूप से एक लूप के भीतर एक लूप है। वर्डप्रेस कोडेक्स उल्लेख करता है कि शॉर्ट कोड (short codes) का उपयोग करते समय यह उपयोगी हो सकता है। मैं आगे बढ़ूंगा और आपको बताऊंगा - हाँ, यह शॉर्ट कोड और कस्टम फ़ील्ड में उपयोगी है I एक कस्टम फ़ील्ड होने की कल्पना करें कि आप उन पोस्ट IDs के साथ भर सकते हैं जो एक ही श्रृंखला का एक हिस्सा हैं (IE: wp.tutsplus.com में चल रहे ट्यूटोरियल भाग 1, 2, और 3), और उसके बाद उस लूप के टाइटल, excerpt और पोस्ट के बारे में अन्य जानकारी को पुल करें। यह उस कार्य को पूरा करने का एक तरीका है।

नेस्टेड लूप उसी प्रकार के लूप की तरह है जो हमने ऊपर बनाया है, जो कि एक वेरिएबल द्वारा परिभाषित किया गया है, इसके अंत में कोड का एक महत्वपूर्ण भाग:

आप इस लूप में wp_reset_postdata() देखेंगे। यह global $post वैरिएबल को मुख्य क्वेरी में वर्तमान पोस्ट पर रीसेट करता है.... जो नेस्टेड लूप के लिए उपयोगी है और साथ ही जब भी आप इस तथ्य के बाद $post चाहते हैं। इस पर स्पष्टीकरण के लिए Rarst को धन्यवाद!

दुर्भाग्य से, इस समय wp_reset_postdata() की कार्यक्षमता के बारे में वर्डप्रेस से बहुत अधिक दस्तावेज नहीं हैं। ऐसा लगता है कि फ़ंक्शन का उपयोग केवल लूप को रीसेट करने के लिए है।


निष्कर्ष

क्या आप अब लूप मास्टर की तरह महसूस करते हैं? यहाँ लूप में एक बहुत व्यापक रूप से देखा गया। लूप ही समझना मुश्किल नहीं है, लेकिन यह वर्डप्रेस में आपके द्वारा चलाए जा रहे सभी चीजों के लिए बहुत महत्वपूर्ण है। लूप वह है जहां यह सब शुरू होता है, जहां आपकी सभी पोस्ट कंटेंट उत्पन्न होते है। मुझे आशा है कि आपने कुछ सीखा है। अगर आपको कुछ और मदद की ज़रूरत है तो कुछ कमैंट्स छोड़ें!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.