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

Custom WordPress ایڈمنسٹریشن پیجیز بنانا، حصہ اول

by
Difficulty:IntermediateLength:LongLanguages:
This post is part of a series called Creating Custom WordPress Administration Pages.
Creating Custom WordPress Administration Pages, Part 2

Urdu (اُردُو) translation by HKazmi (you can also view the original English article)

پچھلی سیریز میں، میں نے‌‍‌ WordPress کی API سیٹینگ کے ساتھ کام کرنے کے بارے میں تفصیلات مہیا کی تھی۔ وہ لوگ جوWordPress کے لیے نئے ہیں یا جو مختلف آپشنز کو استعمال کرنےلیے دیگر ٹولزجیسے کہ Customizer استعما ل کر رہے ہیں، ان کے لیے  یہ ایسی چیزہو سکتی ہے جسے آپ کو اپنی تھیم یا پلگ ان کی ڈیویلپمنٹ میں استعمال نہیں کرنا چاہیے۔ 

جیسا کہ اس Codex میں  بیان کیا گیا ہے:

WordPress2.7 میں شامل سیٹینگز API ، ایڈمن پیجیز،جو سیٹینگز فارمزرکھتے ہیں یا  پر مشتمل ہوتے ہیں، کو خودکار طریقے سے منظم کرنے کی اجازت دیتا ہے۔ یہ آپ کو سیٹنگز پیجیز کو اور ان صقحات کے اندر موجود سیکشنز اور سیکشنز میں موجود فیلڈز کو بھی Define کرنے دیتا ہے

میرا نہیں خیال کہ یہ ایسی چیز ہے جسے سیکھنا ضروری ہو، لیکن ایسی چیز ضرور ہے کہ آپ کو جاننا چاہیے کہ موجود ہے اور اگر آپ کو لگے کہ آپ کو ورڈ پریس ایڈمنسٹریشن ایریا میں موجود آپشن پیجیز سے متعارف ہونے کی ضرورت ہے تو اس کے ساتھ کیسے کام کرنا ہے۔  

یہ ایک طاقتور، کسی قدر پیچیدہ، اے پی آ‏ئی ہے جو ہمیں بہت سی فعالیت (فنشنیلٹی) کے ساتھ میّسر ہے بلآخر، یہ ہمیں زیادہ کام سرور سائیڈ پر اور بہت تھوڑا کام کلائنٹ سائیڈ پر کرنے کی اجازت دیتا ہے۔

 لیکن، اس وقت کیا جب ہم کلائنٹس کے لیے custom solution کے ساتھ کام کر رہے ہوں اور ہمیں تھوری زیادہ آزادی کی ضرورت ہو جتنی کہ API کی سیٹینگز فراہم کرتی ہے۔    مثال کے طور پر، فرض کریں کہ ہمیں ایک پلگ ان بنانا ہے جو سیٹینگ پیج رکھتا ہے لیکن اس کے لیے زیادہ لچکدار اختیارات اور موزوں تصدیق شدہ فنکشنیلٹی کی ضرورت ہے؟

ایسی صورتوں میں، یہ ممکن ہے کہ ہم خود اپنی مرضی کے یا custom ورڈ پریس ایڈمنسٹریشن صفحات بنا‏ئیں۔ اس سیریز میں، ہم دیکھیں گے کہ ایسا کس طرح کریں گے۔

اس سے پہلے ہم شروع کریں

اس طرح کے زیادہ تر ٹٹوریل کے ساتھ، یہ اہم ہے کہ اس کو یقینی بنائیں کہ اس پر عمل کرنے کے لئے آپ کے پاس سب کچھ موجود ہے تاکہ آپ سورس کوڈ، جس کا احاطہ ہم اس سیریز میں کریں گے، کے ساتھ کام کر سکیں۔ 

اس ٹٹوریل کے لئے میں فرض کر رہا ہوں کہ:

  • آپ کے پاس، آپ کے آپریٹنگ سسٹم کے مطابق لوکل ڈیویلپمنٹ انوائرمنٹ سیٹ اپ موجود ہے۔ 
  • آپ کے پاس ورڈ پریس انسٹال ہے اور پلگ ان انسٹال کرنے کے لئے تیار ہے۔
  • آپ ورڈ پریس پلگ ان ڈیویلپمنٹ کے طرز عمل سے واقف ہیں۔
  • آپ آسانی سے پی ایچ پی اور ایچ ٹی ایم ایل کے ساتھ کام کر سکتے ہیں۔

اگر آپ نہیں جانتے کہ ورڈ پریس میں شامل لوکل ڈیویلپمنٹ انوائرمنٹ کا سیٹ اپ کیسے کرنا ہے تو برائے مہربانی یہ دیکھیں this series کہ کیسے یہ کرنا ہے۔ 

اور اگر آپ نسبتا آسانی سے پی ایچ پی سمجھ سکتے ہیں حتّی کہ صرف آسانی سے پڑھ سکتے ہیں تو پھر میں پوری کوشش کروں گا کہ ہر چھوٹے سے چھوٹے کوڈ، جو ہم شئر کریں گے،کے لئے واضح ہدایات اور کمنٹ فراہم کروں۔

ایک دفعہ یہ سب ایک جگہ آ جائے، ہم ہمارے پلگ ان پر کام کرنے کے لئے تیار ہیں۔

کسٹم ورڈ پریس ایڈمنسٹریشن سیٹنگز

اس سلسلے کے آخر میں، ہمارے پاس ایک پلگ ان ہو گا جو درج ذیل ضروریات پہ پورا اترتا ہو گا:

  • موجودہ ورڈ پریس مینیو سسٹم میں ایک نیا سب مینیو آئٹم بنائیں۔
  •  نئے سب مینو کے مصابق ایک نیا سیٹنگ پیج بنائے۔
  • پیج پر آپشنز sanitize اور سیریلائز کریں۔
  • Validate کریں اور ویلیوز ریٹرن کریں جو کہ محفوظ کی تھی اور انہیں ان کے مطابق رینڈر کریں۔

اس کے علاوہ، ہم اس بات کو یقینی بنائیں گے کہ ورڈپریس کوڈنگ سٹینڈرڈ اور اسی جیسی مشقوں کا استعمال کرتے ہوئےجتنا ممکن ہو سکے ہم اس کو سب سے میعاری طریقے سے سمجھیں گے تاکہ آسانی سے اپنے پلگ ان کو  پڑھ، لکھ اور برقرار رکھ سکیں۔ 

بوٹس ٹریپ کا پلگ ان

سب سے پہلی چیز جو ہمیں کرنے کی ضرورت ہے وہ ہے بوٹس ٹریپ کا پلگ ان بنانا۔ اس میں شامل ہو گا ایک ڈائریکٹری بنانا جہاں پلگ ان کی تمام فائلز رکھی جائیں گی، ایک بنیادی README، ایک  لائسنس کی کاپی، ایک bootstrap کی فائل جو کہ وقتا فوقتا پلگ ان کو شروع کرنے کے لئے استعمال ہو گی، اور  ایک ڈائریکٹری جو کہ ایڈمنسٹریٹیو فنکشنیلٹی سے متعلقہ کلاسیس رکھنے کے لئے استعمال ہو گی۔

اس پوسٹ کے ساتھ اٹیچ منٹ کے طور پر فائلز ڈاؤنلوڈ کرنے کے لئے موجود ہیں لیکن، فی الحال، آپ نیچے دیکھ سکتے ہیں کہ میری ڈائریکٹری کیسی نظر آ رہی ہے:

The plugins directory structure

مزید برآں، boots trap پلگ ان کے مندرجات (contents) سادہ ہیں۔ مندرجہ ذیل کوڈ کا جائزہ لیں جو کہ ایک پی ایچ پی فائل custom-admin-settings.php کے لئے ہے، اور پھر میں اسے نیچے بلاک میں مزید تفصیل سے بیان کروں گا۔

غور کریں کہ اوپر دئیے گئے کوڈ میں، اصل میں یہاں بہت کم کوڈ ہے۔ اس کی بجائے ، یہ بہت سارے کمنٹس ہیں۔ کمنٹس کا بنیادی حصہ جو کہ فائل میں سب سے اوپر دیا گیا ہے واضح کرتا ہے کہ فائل کیا کرتی ہے۔  

@wordpress-plugin ٹیگ کے نیچے جگہ وہ ہے جو کہ wordpress، پلگ ان کا ٹائٹل، ڈسکرپشن اور متعلقہ لنکس ورڈ پریس کے  پلگ ان ڈیش بورڈ پر بنانے کے لئے پڑھے گا۔

آگے، ہم ہر کسی کو براہ راست فائل access یا حاصل کرنے سے روکیں گے۔ اور آخرکار، ہم نے plugins_loaded کے ساتھ چلنے والا ایک کسٹم فنکشن بنا لیا ہے  یہ وہ فنکشن ہے جو پلگ ان کو شروع کرنے کے لئے استعمال ہو گا۔

اس  مرحلے پر،آپ کو ورڈ پریس میں لوگ ان ہونے کے قابل ہونا چاہیے،پلگ ان کے  ڈیش بورڈ پر جائیں، اور پھر دیکھیں کہ پلگ ان ایکٹیویٹ ہونے کے لئے موجود ہے۔  آگے بڑھیں اور Activate پر کلک کریں۔

ابھی کچھ بھی نہیں ہو گا، لیکن جیسے جیسے ٹٹوریل کے ساتھ ساتھ کام کریں گے ہم فنکشنیلٹی شامل کرنا شروع کر دیں گے۔

سب مینو آئئٹم بنانا

پلگ ان پر کام شروع کرنے کے لئے ،  پہلے ایک سب مینیو آئٹم  متعارف کرواتے ہیں. ایسا کرنے کے لئے، ہمیں ورڈپریس API فنکشن add_options_page کا فائدہ اٹھانے کی ضرورت پڑے گی. اس فنکشن میں پانچ پیرامیٹرز کی ضرورت ہو گی:

  1. متعلقہ آپشن پیج پرٹائٹل کے طور پر ظاہر کرنے کے لئے ٹیکسٹ
  2. مینوآئٹم کے لئے، سب مینیو ٹیکسٹ کے طور پر ظاہر کرنے کے لئے ٹیکسٹ 
  3. اس مینیو آئٹم کو access یا رسائی حاصل کرنے کے لئے قابلیت کی ضرورت
  4. اس مینیو آئٹم کی شناخت کے لئے استعمال ہو گا menu slug
  5. ایک کال بیک، فنکشن کو کال کرنے کے لئے جو کہ ایڈمن پیج کو پیش کرنے کے لئے ‍‌ذمہ دار ہو گا

خیال رکھئیے کہ ہم اپنی فنکشنیلٹی کو آرگنائز کرنے کے لئے کلاسیں استعمال کر رہے ہیں، زیادہ تر جو کچھ ہم کر رہے ہیں وہ object-oriented ہو گا۔ 

پہلے، ایڈمن ڈائریکٹری میں ایک کلاس بنائیے class-submenu.php کے نام سے۔ چونکہ یہ کلاس نئے سب مینیو کو متعارف کروانے کی ذمہ دار ہے تو ہمیں اس کا نام  تفصیل کے لحاظ سے رکھنے کی ضرورت ہے۔

کلاس کے مندرجات ایسے نظر آنے چاہیے:

اس مرحلے پر، ابھی بھی پلگ ان کچھ نہیں کر رہا۔ ہمیں ابھی بھی اصل کلاس Submenu_Page بنابے کی ضرورت ہے، اور پھر ہمیں کلاسیں bootstrap فائل پر ملانے کی ضرورت ہے۔

سب مینیو پیج بنانا

سب سے پہلے Submenu_Page کلاس کے ساتھ شروع کرتے ہیں- admin ڈائریکٹری میں ایک اور فائل بنائیے اور اس کا نام class-submenu-page.php رکھیں۔ پھر فائل میں درج ذیل کوڈ لکھیں۔

 جب یہ پیج پیش یا render ہو گا، تو یہ سادہ لفظوں میں متن یا ٹیکسٹ ظاہر کرے گا: ".This is the basic submenu page"  آخرکار ہم نئے آپشنز کا اضافہ کرنے لگے ہیں۔  لیکن پہلے، اس پلگ کو اپنی بوٹسٹریپ فائل میں طلب کر کے چلاتے یا استعمال کے قابل بناتے ہیں۔

مینیو اور پیج کو پیش یا رینڈر کرنا

اب آگے، custom-admin-settings.php فائل کھولیں جو کہ اس ٹٹوریل میں ہم نے پہلے بنائی تھی۔ چلیں آگے بڑھیں اور کوڈ لکھیں جو نئے سب مینو آئٹم اور اس سے جڑے پیج کو متعارف کرونے کے لئے ضروری ہیے۔

یاد رکھیں، سب مینو کلاس  کو Submenu_Page کلاس کے instance  کو  اس کے constructor  میں پاس ہونے کی ضرورت ہوتی ہیے ۔ اور پھر ہمیں سب کچھ چلانے کے لئے init میتھڈ کو Submenu کلاس پر کال کرنے کی ضرورت ہوتی ہیے۔ 

کوڈ میں، یہ درج ذیل کی طرح لگتا ہیے:

اس مرحلے پر، آپ کو انسٹالیشن ریفریش کرنے کے قابل ہونا چاہیے، پلگ ان کو ایکٹیویٹ کریں (اگر یہ پہلے سے ایکٹیویٹیڈ نہیں ہے تو)، اور پھر اپنے نئے پیج کو ایڈمنسٹریشن ایریا میں پیش یا رینڈر ہوتے دیکھیں۔  

The custom WordPress administration screen

اگلے آرٹیکل میں، ہم دیکھیں گے کہ کیسے ہم اصلی سیٹنگ کو سکرین میں متعارف کروانا شروع کر سکتے ہیں۔ اس کے علاوہ، ہم اپنے ٹیمپلیٹ (template) اور اپنے ٹیمپلیٹ پارشلز (template partials) کےساتھ کام کرنے کے بارے میں کچھ اچھی مشقیں دیکھیں گے، اور پھر ہم دیکھیں گے کہ کیسے وہ APIs کے ساتھ wired up ہوں گے جو انہیں صرف محفوظ ہی نہیں کرے گی بلکہ کیسے ہم انہیں sanitize اور validate کریں گے۔ 

لیکن جانے سے پہلے، میں کلاس ڈیزائن جو کہ ہم نے اس ٹٹوریل میں دیکھا تھا کے بارے میں تھوڑی بات کرنا چاہتا ہوں۔  عمومی طور پر ، میں بات کرنا چاہتا ہوں اس بارے میں کہ ہم اور کے لئے کلاس کیوں بناتے ہیں اور  یہ فائل سے کیسے تعلق رکھتی ہے

کلاس کی ذمہ داریوں پر کچھ لفظ

وہ لوگ جو واحد ذمہ داری کے اصول سے واقف ہیں، ان کے لئے یہ سیکشن ہو سکتا ہے کوئی دلچسپی نہ رکھتا ہو۔ لیکن اگر آپ کو دوبارہ یاددہانی کی ضرورت ہے یا اس کے بارے میں اور زیادہ جاننا چاہتے ہیں، تو پھر پڑھتے رہیے۔ 

وہ سب چیزیں اکٹھی کریں جو کہ ایک جیسی وجوہات سے تبدیل ہوتی ہیں ہیں۔ ان چیزوں کو علیحدہ کریں جو کہ مختلف وجوہات سے تبدیل ہوتی ہیں۔ 

یہاں اس سے زیادہ بھی ہبں، لیکن اگرآپ ہماری ہر کلاس کی طرف دیکھیں تو (کم سے کم دو جو ہم ابھی تک رکھتے ہیں)، یہ واضح ہو جائے گا کہ وجوہات جن سے ہماری کلاسیں تبدیل ہو سکتی ہیں درج ذیل ہیں۔

  • سب مینیو کے مندرجات (contents) تبدیل ہو سکتے ہیں۔ کوئی بھی چیز پیج ٹائٹل سے لے کر مینیو سلگ(slug) تک اور ہر چیز ان کے درمیان۔
  • پیج جس طریقے سے اپنے مندرجات یا کونٹنٹ رینڈر یا پیش کرتا ہے ہو سکتا ہے(اور تبدیل کیا جائے گا)۔ خاص طور پر، اس وقت یہ کچھ نہیں کر رہا سوائے ایک سٹرنگ(string) ایکو(echo) کرنے کے۔  جلد ہی، ایک مخصوص فائل شامل ہو گی. اس کے بعد،  ایک سے زیادہ فائلوں کو شامل کرنے کی ضرورت ہو سکتی ہے.

اوپر دی گئی وجوہات، دو بہت مختلف وجوہات ہیں جو کہ کلاسیں تبدیل کر سکتی ہیں،  اس وجہ سے انہیں ایک ہی کلاس میں رکھنا اوپر دیے گئے اصول کی خلاف ورزی کرے گا۔ 

آخرکار، میں اسے صرف اس لئے سلمنے نہیں لایا کہ عظیم سوفٹ وئیر انجینرنگ کے اصولوں پر روشنی ڈالنے میں مدد کروں جو کہ ورڈ پریس پر لاگو ہو سکتے ہیں، بلکہ اس لئے بھی کہ آپ کو کچھ ان وجوہات کے لئے تیار ہونے میں مدد کروں جو ہم مخصوص چیزوں کو توڑکر الگ کرنے جا رہے ہیں جو کہ عام طور پر پلگ ان کے تناظر میں بہت بڑی فائلیں ہیں۔

اصولوں کو پڑھنے کے بارے میں اچھی چیز یہ ہے کہ وہ ایک سے زیادہ پروجیکٹس پر لاگو ہو سکتے ہیں اور صرف ایک پروجیکٹ پر ہی نہیں۔ آپ انہیں پڑھتے ہیں، آپ انہں استعمال کرتے ہوئے مشق کرتے، اور آپ دوسرے لوگوں کے لئے آرکیٹکٹ سلوشن میں بہتر ہوتے جاتے ہیں۔

سیکھنے کی رفتار آہستہ ہو سکتی ہے، لیکن ایک دنعہ آپ شروع کرتے ہیں تو اپنے روزمرّہ کے کام پر لاگو کرنا  آسان سے آسان ہوتا جاتا ہے  پھر، جو کام آپ دوسروں کو مہیّا کر رہے ہیں اسے وقت کے ساتھ ساتھ مین ٹین یا برقرار رکھنا بہت آسان  ہوتا جائے گا۔

نتیجہ

بھولئے گا مت کہ اس پوسٹ سے آپ پلگ ان موجودہ حالت میں ڈاؤنلوڈ کر سکتے ہیں۔  جیسے جیسے ہم سیریز کے ساتھ بڑھے گے، میں ہر پوسٹ پر تازہ ترین ورژن مہیّا کر دوں گا تاکہ آپ ساتھ ساتھ کوڈ پر عمل کر سکیں جس کا احاطہ ہر ٹٹوریل میں کیا گیا ہے، اس کی دوہرائی کریں، اور سوال تیار کریں جوکہ آپ کمنٹس میں پوچھنا چاہتے ہبں۔

حاشیہ کے طور پر، اگر آپ ورڈ پریس کے لئے اپنی صلاحیتں بڑھانے کے لئے دوسری یوٹیلیٹز دیکھ رہے ہیں یا کوڈ کی پڑھائی کے لئے اور ورڈ پریس میں ماہر ہونے کے لئے، تو دیکھنا مت بھولئے گا کہ ہم Envato مارکیٹ میں کیا رکھتے ہیں۔

یاد رکھیں، آپ میرے پروفائل پیج پر میرے سارے کورسز اور ٹٹوریلز دیکھ سکتے ہیں، اور آپ مجھے میرے بلاک پر فالو کر سکتے ہیں اور/ یا ٹوئٹر tommcfarlin@  پر جہاں میں مختلف سوفٹ وئر ڈیویلپمنٹ پریکٹسز کے بارے میں بات کرتا ہوں اور ہم انہیں کیسے ورڈ پریس پر لاگو کر سکتے ہیں۔

آخر میں، ہچکچائیے گا نہیں کوئی سوال یا کمنٹ نیچے فیڈ میں چھوڑنے سے۔ میں نے اپنی پوری کوشش کی ہے حصہ لینے کی اور ہر سوال یا تنقید کا جواب دینے کی جو آپ نے پیش کی ہے اس پروجیکٹ کے حوالے سے۔

وسائل

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.