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

إضافة Hooks مخصصة في WordPress: إجراءات مخصصة

by
Difficulty:BeginnerLength:LongLanguages:
This post is part of a series called Adding Custom Hooks in WordPress.
Adding Custom Hooks in WordPress: Custom Filters

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

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

ولكن إذا كنت تريد الوصول إلى تطوير وورد بريس أكثر تطورا ، فمن الجدير معرفة كيفية تنفيذ الخطافات الخاصة بك ، كذلك.

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

ابدء

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

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

إذا كنت تبحث عن المزيد ، فستوفر السلسلة التي يتضمنها هذا البرنامج التعليمي مزيدًا من المعلومات ، مثل كيفية تثبيت WordPress ، ومداخل من المظاهر والمكونات الإضافية ، والمزيد.

ولكن في هذا البرنامج التعليمي ، نركز على الخطافات والإجراءات. لذا بمجرد الانتهاء من الإعداد ، فلنبدأ.

ما هي السنانير؟

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

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

بغض النظر ، هذا هو كيف يتم تعريفها في ويكيبيديا:

البنية المبنية على الأحداث (EDA) ، والمعروفة أيضًا بالبنية المبنية على الرسائل ، هي نمط معماري للبرامج يدعم الإنتاج والكشف والاستهلاك والتفاعل مع الأحداث.

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

  • يحتوي البرنامج على نقاط معينة يبث فيها رسالة تفيد بحدوث شيء ما.
  • نحن ، كمطورين ، قادرين على كتابة التعليمة البرمجية التي تستمع لهذه الرسالة ثم تستجيب لها برمز مخصص.

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

استخدام جافا سكريبت

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

باستخدام jQuery ، يمكنك تنفيذ هذه الوظيفة كما يلي:

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

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

باستخدام وورد

لا تبدو تنفيذ هذا النمط بالضرورة نفس عبر كافة لغات البرمجة أو النماذج. وهذا غالباً ما يعتمد على واجهات برمجة التطبيقات التي توفر الإطار أو مؤسسة، أو التطبيق.

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

للقيام بهذا، نحن إضافة التعليمة البرمجية التالية إلى ملف functions.php لدينا أو لدينا المساعد أو أيا كان نوع المشروع الذي نركز:

يمكنك زيارة هيئة الدستور الغذائي لقراءة المزيد حول admin_menu هوك فضلا عن الدالة add_submenu_page.

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

هذه هي اثنين أمثلة عملية على نمط تصميم يحركها الحدث يجري سواء نفذت وتستخدم.

فهم الإجراءات وورد

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

إعداد الملف

لأغراض التعليمة البرمجية في هذا البرنامج التعليمي، سنقوم باستخدام السمة توينتيسيكستين الافتراضي الذي يأتي مع وورد.

في جذر الدليل الموضوع، قم بإنشاء ملف يسمى توتسبلوس-actions.php. ثم، في functions.php، أضف السطر التالي من التعليمات البرمجية:

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

تعريف موجز للإجراءات

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

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

أريد أن أشير إلى شيء واحد هو أنه إذا كنت تختار لبحث إجراءات وعوامل تصفية أكثر بعد قراءة هذه السلسلة من الدروس (الذي أشجع)، قد تجد الآخرين الإشارة إليها، وبوجه أعم خطاطيف.

أن كان هذا صحيحاً من الناحية الفنية، وأكثر واقعية وأكثر وضوحاً لمناقشة نوع هوك التي كنت تعمل مع كلما كنت تكتب، وعرض، أو مناقشة هذا الموضوع مع شخص آخر.

هذا بسبب إجراءات تهدف إلى تحمل نوع واحد من الوظائف، ومرشحات يعني تحمل نوع آخر من الأداء الوظيفي.

العمل مع الإجراءات

على الرغم من أننا فعلا لقد ألقيت نظرة على مثال محدد للعمل في بعض التعليمات البرمجية المثال أعلاه، دعونا نلقي نظرة على مثال أكثر اكتمالا وأكثر عملية.

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

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

لإنشاء نوع الوظيفة المخصصة الخاصة بنا، سوف نحتاج إلى القيام بأمرين:

  1. تعريف دالة هوكس في ربط الحرف الأول كما هو منصوص عليه بورد
  2. سجل لدينا نوع الوظيفة مع إحدى وظائف API المتوفر

تسجيل عملنا

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

يجب أن تبدو التعليمات البرمجية الخاصة بنا كما يلي:

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

وبعد ذلك، نحن بحاجة إلى تعريف الدالة.

المفتاح لفهم توقيع هذه الدالة بسيط: لقد يدعى أنه tutsplus_register_post_type كما أن الوسيطة الثانية لقد مرت علينا في الدعوة add_action.

وهذا يرشد حرفيا وورد القيام بما يلي: أثناء التهيئة، بإجراء مكالمة إلى الدالة tutsplus_register_post_type.

كل شيء على ما يُرام حتى الآن. لقد ضربنا ليس حقاً أي شيء معقد، وإذا قمت بتحديث الشاشة الإدارة وورد، ثم سوف ترى أنها لا تزال تعمل على الرغم من أنها لا تفعل أي شيء جديد.

ولتغيير هذا الوضع.

إنشاء نوع آخر مخصص

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

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

على وجه التحديد، نحن ذاهبون إلى استخدام ما يلي:

  • التسمية
  • بطاقات عنونة
  • الوصف
  • العامة
  • show_ui
  • وتؤيد

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

وسيبدو هذا الإصدار النهائي والكامل من التعليمات البرمجية لتسجيل نوع الوظيفة:

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

عند النقر فوق "إضافة جديد"، يجب أن تشاهد مكان لعنوان (أو اسم المسافر)، المحرر (للمعلومات السياحية)، ومقتطفات (ربما لبعض الملاحظات حول المسافر). كما يجب أن تشاهد مربع تعريف واحد لنشر المعلومات.

Adding a Time Traveler custom post type

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

تعريف إجراءات مخصصة

عندما يتعلق الأمر بإنشاء الإجراءات الخاصة بنا، هناك ثلاثة أشياء التي نحن بحاجة إلى القيام به. مستوى أساسي على الأكثر، نحن بحاجة إلى القيام بما يلي:

  1. تعريف هوك
  2. إعطاء وظيفة لربط
  3. تسمح للمطورين باستدعاء هوك

أبسط مثال يمكن أن أعطى لهذا في التعليمات البرمجية التالية:

لا تتردد في إضافة هذا مثال التعليمات البرمجية إلى tutsplus-actions.php بحيث يمكنك الاستمرار في قرص واستكشاف التعليمات البرمجية بعد هذا البرنامج التعليمي.

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

إذا قمت بتحديث لوحة المعلومات الخاصة بك، سوف تشاهد "هذا ربط إجراء مخصص" عرض في الجزء العلوي من لوحة المعلومات الخاصة بك.

لاحظ أن لا توصي ربط إلى admin_notices إلا إذا كنت تخطط على وجه التحديد لإعلام المستخدم برسالة النجاح أو تحذير أو خطأ. أنا باستخدام الأمر هنا على وجه التحديد كوسيلة لإثبات لدينا هوك المخصصة.

إعادة النظر في نوع الوظيفة لدينا

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

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

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

للقيام بذلك ، سنقوم بتوصيل خطافنا المخصص إلى الخطاف الأولي:

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

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

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

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

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

ختام

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

لقد اخترت تقديم هذا كمثال أخير لأن هناك أوقاتًا قد ترغب فيها في تسجيل خطاف مخصص وتحتاج إلى إطلاقه قبل اكتمال ربط موجود مسبقًا.

تسجيل خطاف للوقوف بمفرده أمر سهل: فأنت ببساطة لا تعلق به خطافًا موجودًا مسبقًا ، وتقوم بإجراء مكالمة وظيفية أساسية كما رأينا مع رمز مدمن على admin_notices.

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

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

تذكر ، يمكنك التقاط جميع الدورات التدريبية والبرامج التعليمية على صفحة ملفي الشخصي ، ويمكنك متابعتي على مدونتي و / أو Twitter علىtommcfarlin حيث أتحدث عن ممارسات تطوير البرمجيات المختلفة وكيف يمكننا توظيفها في WordPress.

لا تتردد في ترك أي أسئلة أو تعليقات في الخلاصة أدناه ، وسأحاول الرد على كل منها.

مصادر

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.