Students Save 30%! Learn & create with unlimited courses & creative assets Students Save 30%! Save Now
Advertisement
  1. Code
  2. Theme Development
Code

واجهة برمجة تطبيقات إعدادات WordPress ، الجزء 6: صفحات القائمة 

by
Difficulty:IntermediateLength:LongLanguages:
This post is part of a series called The Complete Guide to the WordPress Settings API.
The WordPress Settings API, Part 5: Tabbed Navigation For Settings
The WordPress Settings API, Part 7: Validation, Sanitisation, and Input

Arabic (العربية/عربي) translation by miahood (you can also view the original English article)

في الجزء 3 من هذه السلسلة ، قمنا بمسح وظائف القائمة المختلفة التي توفرها واجهة برمجة تطبيقات WordPress.  إذا كنت متابعاً ، فأنت تعلم أننا قمنا بالفعل بإعداد صفحة إعدادات لموضوعنا باستخدام الوظيفة add_theme_page .   على الرغم من أن إدخال القوائم والقوائم الفرعية لا يمثل جزءًا صريحًا من واجهة برمجة تطبيقات الإعدادات ، إلا أنهما يلعبان دورًا في إنشاء وظائف مخصصة ومكوِّنات إضافية و / أو مظاهر. 

في هذه المقالة ، سنقدم قائمة جديدة إلى لوحة تحكم WordPress التي ستجعل خيارات الموضوع متاحة في مكان آخر بخلاف خيارات "المظهر". 

قبل البدء: تفترض هذه المقالة أنك معتاد على واجهة برمجة التطبيقات لإعدادات وخيارات السمات.  إذا كنت مطورًا في WordPress للمبتدئين أو حتى متوسطا ، فإنني أوصي بشدة بالالتحاق ببقية المسلسل قبل الغوص في هذا المنشور. 


نظرة على API 

نظرًا لأننا نظرنا بالفعل في كل من وظائف القائمة ، لا نحتاج إلى إعادة صياغة كل الوظائف المتوفرة في WordPress.  بدلاً من ذلك ، سنلقي نظرة على تلك التي سنستخدمها ثم نستخدمها من خلال مثال عملي لكيفية استخدامها في عملنا الخاص. 

قبل أن ننظر إلى كل وظيفة ، دعنا نفصل ما نخطط لإنجازه في المرحلة التالية من هذه السلسلة:  

  • قدم قائمة من المستوى الأعلى لخيارات المظهر 
  • أضف عنصر قائمة فرعية يرتبط بعلامة التبويب "خيارات العرض" 
  • أضف عنصر قائمة فرعية يرتبط بعلامة التبويب "الخيارات الاجتماعية" 

بسيطة نسبيا ، أليس كذلك؟   من أجل القيام بذلك ، سنستفيد من الوظيفتين التاليتين: 

  • add_menu_page التي يتم استخدامها لتقديم عناصر القائمة ذات المستوى الأعلى 
  • add_submenu_page التي يتم استخدامها لتقديم عناصر القائمة الفرعية لقوائم المستوى الأعلى. 

سنلقي نظرة على معلمات كل وظيفة واستخدامها أثناء تنفيذها في موضوعنا. 

لاحظ أن ما تبقى من هذه المقالة يعتمد على هذا الإصدار من Sandbox Settings Sandbox .  إذا كنت تتابع مع المستودع ، تأكد من التحقق من ذلك. 


قائمة المستوى الأعلى 

أول شيء نريد القيام به هو تقديم قائمة من المستوى الأعلى.  ستظهر هذه القائمة مباشرة أسفل قائمة "الإعدادات" في لوحة معلومات WordPress وستخدم غرضين.  يجب أن القائمة: 

  1. فضح خيارات الموضوع على لوحة القيادة وورد 
  2. عرض صفحة خيارات افتراضية لخيارات السمات 

تأخذ الدالة الوسيطات السبع التالية ، الخمسة الأولى مطلوبة ، أما الاثنين الأخير فليسوا: 

  1. page_title هو النص الذي سيتم عرضه في شريط عنوان المتصفح 
  2. menu_title هو النص الذي سيتم عرضه لعنصر القائمة 
  3. تشير القدرة إلى الدور الذي يجب أن يمتلكه المستخدم للوصول إلى هذه القائمة 
  4. menu_slug هي قيمة فريدة تحدد هذه القائمة.     إنها أيضًا طريقة تسجيل القوائم الفرعية نفسها بهذه القائمة. 
  5. function_name الذي يسمى عند النقر فوق القائمة لعرض صفحة الخيارات .
  6. icon_url هو المسار إلى الرمز الذي تريد عرضه بجوار عنصر القائمة. 
  7. الموقع هو المكان الذي يجب أن تضاف القائمة فيه إلى القوائم الأخرى في لوحة معلومات WordPress. 

في عملنا ، سنركز فقط على المعلمات الخمس الأولى.  أناقش وضع القائمة في ختام هذه المقالة. 

للبدء ، سنحتاج إلى تقديم مكالمة إلى الوظيفة add_menu_page .  وفقًا لـ Codex WordPress ، يمكن إضافة قوائم الإدارة باستخدام خطافadmin_menu .  في وقت سابق من هذه السلسلة ، كتبنا دالة تضيف  خيارات السمات إلى قائمة "المظهر". على وجه التحديد ، كتبنا sandbox_example_theme_menu : 

لاحظ في الكود أعلاه أن هذه الوظيفة مسجلة مع خطاف admin_menu كذلك.  يجب عليك دائمًا السعي للحفاظ على اتساق وظائفك منطقيًا.  نظرًا لأن لدينا بالفعل وظيفة تسجل قائمة ، يتم تسجيلها باستخدام الخطاف المناسب ، وبما أننا نقدم وظائف مماثلة ، فسنضيف وظائف القائمة الجديدة إلى هذه الوظيفة. 

أضف الدعوة التالية إلى add_menu_page مباشرة تحت المكالمة أعلاه: 

كما ترى ، نحن نسجل قائمة تعرض "Sandbox Theme" في كل من شريط عنوان المتصفح وفي عنصر القائمة.  نحن نعرض القائمة فقط للمشرفين وأعطينا القائمة المعرف الفريد لـ "sandbox_theme_parent_menu ".  سنقوم بإعادة استخدام هذه المعلمة في القسم التالي. 

هناك شيء واحد مهم نحتاج إلى توضيحه: لاحظ أننا مررنا "sandbox_theme_display " كدالة يتم استدعاؤها عند النقر على عنصر القائمة هذا.  أذكر أنه في الجزء 3 قدمنا ​​هذه الوظيفة (ونحن صقلناها في الجزء 5 ).  وعلى وجه التحديد ، إنها مسؤولة عن عرض الصفحة 

من خلال تمرير اسم الوظيفة الحالي إلى الوظيفة add_menu_page ، فنحن نستفيد من الشفرة التي قمنا بكتابتها بالفعل ونقوم بتقديم صفحة خيارات افتراضية لعنصر القائمة. 

في هذه المرحلة ، نحن جاهزون لبدء إضافة قوائم فرعية ولكن قبل المضي قدمًا ، تأكد من أن وظيفتك تبدو تمامًا كما يلي: 


إختر Submenus 

submenus تشبه إلى حد كبير القوائم إلا أنها "تنتمي" إلى قائمة موجودة.  واجهة برمجة التطبيقات لتسجيل القوائم الفرعية مشابهة نسبيًا أيضًا.  تقبل الدالة ستة حجج ، تكون الخمسة الأولى المطلوبة ، وآخرها اختياري: 

  1. parent_slug  يشير إلى المعرف الفريد لعنصر القائمة الأصل.  في حالتنا ، " sandbox_theme_menu ". 
  2. page_title هو النص الذي سيتم عرضه في شريط أدوات المستعرض عند تنشيط عنصر القائمة الفرعية هذا 
  3. menu_title هو النص الخاص بهذا العنصر الفرعي الفعلي في لوحة المعلومات 
  4. القدرة هو الدور الذي يجب أن يمتلكه المستخدم للوصول إلى عنصر القائمة هذا 
  5. menu_slug هو المعرف الفريد لعنصر القائمة المعين هذا 
  6. function_name الذي يسمى عند النقر فوق القائمة لعرض صفحة الخيارات 

الوظيفة واضحة.  لدينا عنصرين من القائمة لتقديم - أحدهما لـ "خيارات العرض" وواحد لـ "الخيارات الاجتماعية". 

خيارات العرض 

أولاً ، دعنا نقدم عنصرًا فرعيًا لخيارات العرض.  أضف كتلة التعليمات البرمجية التالية مباشرةً تحت استدعاء add_menu_page الذيحددناه أعلاه: 

يجب أن تكون كل المعلمات أعلاه واضحة باستثناء اسم الدالة الذي مررنا به كوسيطة نهائية.  لاحظ أنه نفس اسم الوظيفة الذي قدمناه في استدعاء add_menu_page .  لكن هذا منطقي ، صحيح؟  بعد كل شيء ، "خيارات العرض" هي علامة التبويب الافتراضية التي يتم عرضها عند تحديد خيارات السمة بحيث يكون من المنطقي أن يتم تقديمها عند تحديد قائمة المستوى الأعلى وعند تحديد عنصر القائمة "خيارات العرض" . 

في هذه المرحلة ، هناك ميزة هامة في WordPress للتمييز: لاحظ أنه بمجرد إضافة عنصر القائمة الفرعية الأولى ، سيقوم WordPress فعليًا بعرض عنصرين فرعيين لقائمة المستوى الأعلى - عنصر واحد يكرر وظيفة المستوى الأعلى القائمة والعنصر الذي يتوافق مع عنصر القائمة الفرعية الذي قمت بتعريفه للتو.  أقوم بإحضار ذلك لأنه ، من واقع خبرتي ، رأيت المطورين يختلطون على كيفية حدوث ذلك (ولماذا).  باختصار ، هو أن WordPress يقوم بذلك - فلا شيء خاطئ في شفرتك. 

الخيارات الاجتماعية 

إن إضافة عنصر قائمة للخيارات الاجتماعية يكاد يكون تمامًا مثل إضافة عنصر قائمة لخيارات العرض.  بالطبع ، نحن نريد فقط تغيير قيم شريط العنوان ، عنصر القائمة ، والصفحة التي يتم عرضها كلما تم تحديد القائمة.  أولاً ، دعنا نعد اتصالنا إلى الوظيفة add_submenu_page .  يجب أن تبدو هذه: 

احفظكم الخاص بك ، وقم بتحديث لوحة المعلومات الخاصة بك ، وأن تتحكم فيها  "خيارات العرض".  نظرًا لأننا نجحنا في "  sandbox_theme_display  " كاسم الوظيفة ، تلك هو ما يجب أن نتوقعه ، أليس كذلك؟  لذلك نحن نواجه الآن تحديًا صغيرًا: كيف نختار علامة التبويب "الخيارات الاجتماعية" عند النقر على عنصر القائمة الفرعية؟ 

إعادة بيع وظيفة علامة التبويب الخاصة بنا 

هناك نوعان من الخيارات المختلفة التي نستخدمها لربط عنصر القائمة الفرعية الجديد بعلامة التبويب المناسبة في صفحة خيارات السمات: 

  • يمكننا تحديد وظيفة جديدة تقدم الخيارات الاجتماعية.  سيتطلب ذلك القيام ببعض الأعمال الإضافية في تقديم وظيفة جديدة ، وإعداد وظيفة tabbing بحيث لا نكسر تجربة الصفحة الحالية ، ونكرر القليل من التعليمات البرمجية. 
  • يمكننا إعادة تصميم وظيفة sandbox_theme_display الحالية لقبول معلمة اختيارية ثم استخدام دالة مجهولة في استدعاء add_submenu_pageلتمرير معلمة إليها. 

في نهاية المطاف ، أي من هذه الخيارات متروك لك. ومع ذلك ، فما استقاموا لكم فاستقيموا بدلاً من ذلك refactor وظيفتي الحالية من رمز مكرر لذلك هذا ما سأفعله في بقية هذه المقالة. 

أولاً ، لنبدأ بإعادة إنشاء وظيفة sandbox_theme_display الخاصة بنا .  دعنا نقبل ذلك بوسيطة اختيارية سيتم استخدامها للإشارة إلى علامة التبويب التي نريد تحديدها.  حدد موقع التوقيع التالي في ملف functions.php الخاص بك : 

قم بتحديث التوقيع بحيث يقبل وسيطة واحدة ويقوم بتعيينها إلى null عندما لا يتم  تعريفها:

إذا كنت حديث العهد بـ PHP ، فيمكنك القراءة عن الوسيطات الافتراضية في هذه الصفحة . 

تذكر من المقالة الأخيرة أن وظيفة العرض الخاصة بنا تبحث بالفعل عن قيمة سلسلة استعلام يتم تعيينها.  ما زلنا نرغب في الحفاظ على هذه الوظيفة ، ولكننا بحاجة إلى حساب حقيقة أن المعلمة قد يتم تمريرها إلى الوظيفة ، كذلك.  لتنفيذ هذا إعادة بيع المعمل ، حدد أولاً سطر التعليمات البرمجية التالي في وظيفةsandbox_theme_display : 

لاحظ أن هذا السطر المعين من التعليمات البرمجية لا يتعلق إلا بمعلمات سلسلة الاستعلام.   لحساب المعلمة الاختيارية الجديدة ، نحتاج إلى تقديم منطق يتحقق أولاً من تحديد معلمة سلسلة طلب البحث ، وإذا لم يكن الأمر كذلك ، فستتحقق لمعرفة ما إذا تم تعيين وسيطة الدالة لعرض الخيارات الاجتماعية ، وإذا لم يكن الأمر كذلك ، سيكون الافتراضي إلى خيارات العرض.   استبدل سطر التعليمة البرمجية أعلاه بالشروط التالية: 

يجب أن تبدو النسخة النهائية من الوظيفة كما يلي: 

نحن لم ننتهي بعد   على الرغم من أننا قمنا بالعمل الضروري لعرض الخيارات الاجتماعية إذا تم تمرير المعلمة المناسبة ، فإننا لم نطلق على هذه الوظيفة فعليًا باستخدام معلمة.  للقيام بذلك ، نحن بحاجة إلى refactor وظيفةadd_submenu_page من فوق.    حاليا ، يبدو استدعاء الدالة مثل هذا:

نحن بحاجة إلى تحديث المعلمة النهائية بحيث تستدعي وظيفة العرض وتمرير القيمة المناسبة لتقديم الخيارات الاجتماعية.   للقيام بذلك ، سنقوم بإنشاء وظيفة مجهولة: 

إذا كنت جديدًا في PHP ، فتأكد من القراءة على ميزة create_functionوالوظائف المجهولة.   على الرغم من أنهم خارج نطاق هذه المقالة ، إلا أنها يمكن أن تكون قوية (ومفيدة!) عند استخدامها في السياق المناسب. 

يجب أن يكون الإصدار النهائي من وظيفة sandbox_example_theme_menuكما يلي: 


استنتاج 

في هذه المرحلة ، يحتوي موضوعنا الآن على عنصر قائمة أعلى مستوى خاص به مع كل من علامات تبويب الإعدادات التي يمكن الوصول إليها عبر عناصر القائمة الفرعية.   على الرغم من أن ذلك مفيد ، إلا أنه من المهم ملاحظة أن هناك بعض الآراء المختلطة حول إدخال القوائم في لوحة أدوات WordPress.   على الرغم من أنها يمكن أن تجعل عملك أكثر وضوحًا ويمكن الوصول إليه ، إلا أنها قد تتداخل أيضًا مع قوائم WordPress الموجودة أو غيرها من أعمال الجهات الأخرى وخاصة إذا حاولت وضع قوائمك في مكان ما باستخدام معلمة الموضع.   بالرغم من عدم وجود خطأ مطلق أو صحيح مطلق عندما يتعلق الأمر بإدخال القوائم ، فكر مليًا في المكان الذي تعرض فيه قوائمك.   إذا كانت قائمة WordPress الموجودة منطقية ، قم بتسجيل عملك كقائمة فرعية. 

في المشاركة التالية ، سنبدأ في إلقاء نظرة على عناصر الإدخال المختلفة التي يمكننا استخدامها لتقديم خيارات في موضوع WordPress الخاص بنا وكذلك كيفية التحقق من صحة البيانات وتعقيمها قبل إجراء تسلسل لها. 


المصادر ذات الصلة 

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.