لوپ ایک طے شدہ طریقہ کار ہے جو ورڈپریس تھیم کی ٹیمپلیٹ فائلوں کے ذریعے پوسٹس کو آؤٹ پٹ کرنے کے لیے استعمال کرتا ہے۔کتنی پوسٹس بازیافت کرنی ہیں اس کا تعین اس بات سے ہوتا ہے کہ ایک پیج پر کتنی پوسٹس کی تعداد دکھانی ہے جسے آپ ۔admin>settings>reading میں سیٹ کر سکتے ہیں.لوپ کے اندر، ورڈپریس موجودہ صفحہ پر ظاہر ہونے والی ہر پوسٹ کو بازیافت کرتا ہے اور اسے آپ کے تھیم کی ہدایات کے مطابق فارمیٹ کرتا ہے۔
لوپ ورڈپریس ڈیٹا بیس سے ہر پوسٹ کا ڈیٹا نکالتی ہے اور ہر ٹیمپلیٹ ٹیگ کی جگہ مناسب معلومات داخل کرتی ہے۔لوپ میں موجود کسی بھی HTML یا PHP کوڈ پر ہر پوسٹ کے لیے کارروائی کی جائے گی۔
سادہ لفظوں میں کہا جائے تو لوپ اپنے نام کے مطابق ہے: یہ موجودہ صفحہ کے لیے حاصل کی گئی ہر پوسٹ کو ایک وقت میں ایک ایک کرکے دیکھتی ہے اور آپ کے تھیم میں بیان کردہ عمل کو انجام دیتی ہے۔
آپ لوپ کو متعدد مختلف چیزوں کے لیے استعمال کر سکتے ہیں، مثال کے طور پر:
1:- اپنے بلاگ کے ہوم پیج پر پوسٹ کے عنوانات اور اقتباسات دکھانے کے لیے۔
2:- ایک پوسٹ پر مواد اور تبصرے دکھانے کے لیے؛
3:- ٹیمپلیٹ ٹیگز کی مدد سے انفرادی صفحہ پر مواد دکھانے کے لیے۔
4:- کسٹم پوسٹ کی اقسام اور کسٹم فیلڈز سے ڈیٹا دکھانے کے لیے۔
آپ اپنی ٹیمپلیٹ فائلوں میں لوپ کو اپنی مرضی کے مطابق بنا سکتے ہیں تاکہ مختلف مواد کو ڈسپلے اور تبدیل کر سکیں۔
لوپ کی تفصیل The Loop in Detail
بنیادی لوپ ہے:
یہ لوپ کہتی ہے کہ جب پوسٹس موجود ہوں تو لوپ کے ذریعے پوسٹس کو ڈسپلے کریں۔ مزید تفصیل مندرجہ ذیل ہے:
1:- ()have_posts فنکشن چیک کرتا ہے آیاکہ کوئی پوسٹس ہیں۔
2:- اگر پوسٹس موجود ہیں توwhile لوپ اس وقت تک جاری رہتی ہے۔، جب تک قوسین میں موجود شرط منطقی طور پر درست ہے-جب تک ()have_posts درست ویلیو دے گی، لوپ جاری رہے گی۔
لوپ کا استعمال Using The Loop
لوپ کو index.php، اور کسی دوسرے ٹیمپلیٹس میں رکھا جانا چاہیے جو پوسٹ کی معلومات کو ظاہر کرنے کے لیے استعمال ہوتے ہیں۔کیونکہ آپ اپنے ہیڈر کو بار بار نقل نہیں کرنا چاہتے،لوپ کو ہمیشہ () get_header کال کے بعد رکھا جانا چاہیے۔مثال کے طور پر:
مندرجہ بالا مثال میں، لوپ کا اختتام ایک endwhile اور endif کے ساتھ دکھایا گیا ہے۔لوپ کو ہمیشہ اسی if اور while اسٹیٹمنٹس سے شروع ہونا چاہیے، جیسا کہ اوپر بتایا گیا ہے اور اسی اختتامی بیانات کے ساتھ ختم ہونا چاہیے۔
کوئی بھی ٹیمپلیٹ ٹیگ جو آپ تمام پوسٹس پر لاگو کرنا چاہتے ہیں وہ شروع اور اختتامی بیانات کے درمیان موجود ہونا چاہیے۔
آپ ایک حسب ضرورت 404 “نہیں ملا” پیغام شامل کر سکتے ہیں جواس وقت ظاہر کیا جائے گا اگر مخصوص معیار سے میل کھاتی کوئی پوسٹ دستیاب نہیں ہے۔ پیغام کو endwhile اور endif بیانات کے درمیان رکھا جانا چاہیے، جیسا کہ ذیل کی مثالوں میں دیکھا گیا ہے۔
ایک انتہائی سادہ index.php فائل اس طرح نظر آئے گی:
لوپ کیا ظاہر کرسکتی ہے What the Loop Can Display
لوپ ہر پوسٹ کے لئے متعدد مختلف اجزاء کو ظاہر کرسکتی ہے۔مثال کے طور پر ، بہت سے موضوعات میں استعمال ہونے والے کچھ کامن ٹیمپلیٹ ٹیگز یہ ہیں:
()next_post_link:موجودہ پوسٹ کے بعد تاریخ کے مطابق شائع ہونے والی پوسٹ کا ایک لنک.
()previous_post_link:موجودہ پوسٹ سے پہلے تاریخ کے مطابق شائع ہونے والی پوسٹ کا ایک لنک.
()the_category :پیج یا پوسٹ سے منسلک کیٹگری یا کیٹگریز ظاہر کرنے کے لیے استعمال ہوتی ہے.
()the_author : پیج یا پوسٹ کے مصنف کو ظاہر کرتی ہے.
()the_content:پوسٹ یا پیج کا اہم مواد دکھاتی ہے.
()the_excerpt:کسی پوسٹ کے اہم مواد کے پہلے 55 الفاظ کو ظاہر کرتی ہے جس کے بعد بیضوی (…) ہوتا ہے یا مزید لنک پڑھیں جو مکمل پوسٹ پر جاتا ہے۔ آپ کسی خاص اقتباس کی لمبائی کو اپنی مرضی کے مطابق بنانے کے لئے کسی پوسٹ کے “اقتباس” فیلڈ کو بھی استعمال کرسکتے ہیں۔
()the_ID:پیج یا پوسٹ کی ID کو ظاہر کرتا ہے.
()the_meta:پوسٹ یا پیج سے وابستہ کسٹم فیلڈز کو ظاہر کرتی ہے.
()the_shortlink:سائٹ کے URL اور پوسٹ یا صفحے کی ID کا استعمال کرتے ہوئے صفحہ یا پوسٹ کا ایک لنک
()the_tags :پوسٹ سے وابستہ ٹیگ یا ٹیگز.
()the_title:پوسٹ یا پیج کا عنوان ظاہر کرتا ہے.
()the_time:پوسٹ یا صفحے کے لئے وقت یا تاریخ۔ اس کو معیاری پی ایچ پی ڈیٹ فنکشن فارمیٹنگ کا استعمال کرتے ہوئے اپنی مرضی کے مطابق بنایا جاسکتا ہے۔
آپ مشروط ٹیگز بھی استعمال کرسکتے ہیں ، جیسے:
()is_home:اگر موجودہ صفحہ ہوم پیج ہے تو سچ درست ویلیو لوٹاتا ہے.
()is_admin:اگر انتظامی اسکرین کے اندر ہے تو سچائی لوٹاتا ہے ، دوسری صورت میں غلط .
()is_single: اگر صفحہ فی الحال ایک ہی پوسٹ کو دکھا رہا ہے تو سچ لوٹاتا ہے.
()is_page: اگر صفحہ فی الحال ایک ہی پیج کو دکھا رہا ہے تو سچ لوٹاتا ہے.
()is_page_template:اس بات کا تعین کرنے کے لئے استعمال کیا جاسکتا ہے کہ آیا کوئی صفحہ کسی مخصوص ٹیمپلیٹ کا استعمال کررہا ہے ،
for example: is_page_template(‘about-page.php’)
()is_category:اگر صفحہ یا پوسٹ میں مخصوص کیٹگری ہے تو درست ورنہ غلط ، مثلاََ is_category(‘news’).
()is_tag:اگر کسی صفحے یا پوسٹ میں مخصوص ٹیگ موجود ہے تو درست ورنہ غلط.
()is_author:اگر آپ مصنف کے archive پیج کے اندر ہیں تو درست ورنہ غلط.
()is_search:اگر موجودہ صفحہ تلاش کے نتائج کا صفحہ ہے تو درست ورنہ غلط.
()is_404:اگر موجودہ صفحہ موجود نہیں ہے تو درست ورنہ غلط.
()has_excerpt:اگر پوسٹ یا پیج کے پاس کوئی اقتباس ہے تو درست ورنہ غلط.
بلاگ آرکائیو Blog Archive
زیادہ تر بلاگز میں بلاگ آرکائیو کا صفحہ ہوتا ہےجو پوسٹ کا عنوان ، تھمب نیل اور اقتباس سمیت متعدد چیزیں دکھا سکتی ہے۔نیچے دی گئی مثال میں ایک سادہ لوپ دکھائی گئی ہے جو یہ چیک کرتی ہے آیاکہ کوئی پوسٹس موجود ہیں یا نہیں اور ، اگر موجود ہیں تو ، ہر پوسٹ کے عنوان ، تھمب نیل اور اقتباس کو آؤٹ پٹ کرتی ہے۔اگر کوئی پوسٹس موجود نہیں ہے تو ، یہ قوسین میں پیغام دکھاتی ہے۔
انفرادی پوسٹ Individual Post
ورڈپریس میں ، ہر پوسٹ کا اپنا صفحہ ہوتا ہے، جو اس پوسٹ کے لئے متعلقہ معلومات دکھاتا ہے۔ٹیمپلیٹ ٹیگز آپ کو اپنی مرضی کے مطابق یہ اختیار دیتے ہیں کہ آپ کون سی معلومات ظاہر کرنا چاہتے ہیں۔
ذیل کی مثال میں ، لوپ پوسٹ کے عنوان اور مواد کو آؤٹ پٹ کرتی ہے۔آپ پوسٹ کے بارے میں بنیادی معلومات ظاہر کرنے کے لئے اس مثال کو کسی پوسٹ یا پیج ٹیمپلیٹ فائل میں استعمال کرسکتے ہیں۔آپ پوسٹ میں مزید ڈیٹا شامل کرنے کے لئے اس ٹیمپلیٹ کو بھی اپنی مرضی کے مطابق بنا سکتے ہیں ،جیسے کیٹگری.
کچھ کیٹگریز سے مختلف طریقے سےپوسٹس اسٹائل کرنا Style Posts from Some Categories Differently
مندرجہ ذیل مثال کچھ کام سرانجام دیتی ہے:
سب سے پہلے ، یہ ہر پوسٹ کو اپنے عنوان ، وقت ، مصنف ، مواد اور کیٹگری کے ساتھ دکھاتی ہے،مذکورہ بالا انفرادی پوسٹ کی طرح۔
پھر ، یہ ()in_category ٹیمپلیٹ ٹیگ کی مدد سے ID 3 والی پوسٹوں کو مختلف انداز میں اسٹائل کرتی ہے۔
کوڈ کے تبصرے اس مثال میں لوپ کے ہر مرحلے میں تفصیلات فراہم کرتے ہیں:
متعدد لوپس Multiple Loops
کچھ حالات میں، آپ کو ایک سے زیادہ لوپ استعمال کرنے کی ضرورت پڑ سکتی ہے۔مثال کے طور پر آپ صفحہ کے اوپری حصے میں مواد کی فہرست کے ٹیبل میں پوسٹس کے عنوانات کو ظاہر کرنا چاہتے ہیں اور پھر مواد کو بقیہ صفحہ پر ظاہر کرنا چاہتے ہیں۔چونکہ استفسار کو تبدیل نہیں کیا جا رہا ہے جب ہمیں دوسری بار پوسٹس کو لوپ کرنے کی ضرورت ہوتی ہے تو ہمیں صرف لوپ کو ریوائنڈ کرنے کی ضرورت ہوتی ہے۔اس کے لیے ہم ()rewind_posts فنکشن استعمال کریں گے.
rewind_posts کا استعمال Using rewind_posts
آپ اسی سوال کو دوسری بار لوپ کرنے کے لیے ()rewind_posts استعمال کر سکتے ہیں۔یہ مفید ہے اگر آپ ایک ہی سوال کو ایک صفحہ پر مختلف مقامات پر دو بار ڈسپلے کرنا چاہتے ہیں۔یہاں ()rewind_posts کی ایک مثال ہے:
ثانوی سوالات اور لوپس بنانا Creating secondary queries and loops
()wp_reset_postdata استعمال کریں-جب آپ WP_Query کے ساتھ اپنی مرضی کے مطابق یا ایک سے زیادہ لوپس چلا رہے ہوں۔یہ فنکشن عالمی post$ متغیر کو مرکزی سوال میں موجودہ پوسٹ میں بحال کرتا ہے۔اگر آپ بہترین طریقوں پر عمل کر رہے ہیں،یہ سب سے عام فنکشن ہے جسے آپ لوپس کو دوبارہ ترتیب دینے کے لیے استعمال کریں گے۔
اس فنکشن کو صحیح طریقے سے استعمال کرنے کے لیے، WP_Query کے ساتھ کسی بھی لوپ کے بعد درج ذیل کوڈ رکھیں:
;()php wp_reset_postdata ?>
یہاں WP_Query استعمال کرنے والی لوپ کی ایک مثال ہے جسے ()wp_reset_postdata کے ساتھ دوبارہ ترتیب دیا گیا ہے۔
wp_reset_query کااستعمال Using wp_reset_query
()wp_reset_query کا استعمال WP_Query اور عالمی post $ ڈیٹا کو اصل مین استفسار پر بحال کرتی ہے۔اگر آپ اپنے لوپ میں ()query_posts استعمال کرتے ہیں تو آپ کو اپنے لوپ کو دوبارہ ترتیب دینے کے لیے اس فنکشن کا استعمال کرنا چاہیے۔آپ اسے WP_Query کے ساتھ کسٹم لوپس کے بعد استعمال کر سکتے ہیں کیونکہ جب یہ چلتا ہے تو یہ دراصل ()wp_reset_postdata کو کال کرتا ہے۔تاہم، ()wp_reset_postdata کو WP_Query پر مشتمل کسی بھی کسٹم لوپس کے ساتھ استعمال کرنا بہترین عمل ہے۔
نوٹ: ()query_posts بہترین عمل نہیں ہے اور اگر ممکن ہو تو اس سے گریز کرنا چاہیے۔ لہذا، آپ کو ()wp_reset_query کا زیادہ استعمال نہیں کرنا چاہیے۔
اس فنکشن کو صحیح طریقے سے استعمال کرنے کے لیے، درج ذیل کوڈ کو کسی بھی لوپ کے بعد ()query_posts کے ساتھ رکھیں۔
;()php wp_reset_query ?>