تعد وورد بريس Hooks واحدة من أهم الأدوات الموجودة في ترسانة مطوري وورد بريس . إنها أساس مكون وورد بريس الإضافي وتطوير السمات. يمكنك استخدام العديد من الخطافات المضمنة في وورد بريس “للتوصيل” بـ وورد بريس Core باستخدام التعليمات البرمجية المخصصة الخاصة بك والقيام بشيء ما أو تعديله .
هناك نوعان من وورد السنانير: تطبيقات و المرشحات . الخطافات شائعة جدًا لدرجة أن وورد بريس Core يستخدمها على نطاق واسع بنفسه. يتضمن وورد بريس أيضًا طريقة لتعريف الخطافات المخصصة الخاصة بك بحيث يمكن للمطورين الآخرين الارتباط بكودك.
يعد تعلم كيفية عمل الإجراءات والفلاتر والخطافات المخصصة أمرًا ضروريًا لإتقان تطوير وورد بريس.
يغطي النصف الأول من هذه المقالة أساسيات خطافات وورد بريس ويشرح كيفية عملها مع أمثلة متعددة. في النصف الثاني ، ستتعلم كيف يمكنك استخدام الخطافات لتخصيص وورد بريس ، وإنشاء الخطافات المخصصة الخاصة بك ، واستخدامها لبناء الإضافات القابلة للتوسيع الخاصة بك.
ما هي خطافات ووردبريس؟
A صفحة وورد يتم تجميعها من قبل طن من الوظائف واستعلامات قاعدة البيانات. يعمل وورد بريس Core والإضافات والقالب معًا لإخراج عناصر الصفحة مثل النص والصور والبرامج النصية والأنماط. بمجرد تجميعها بالكامل ، يقوم المتصفح بعد ذلك بتجميعها معًا وعرض الصفحة.
تتيح لك أدوات وورد بريس “ربط” عملية البناء هذه في نقاط معينة وتشغيل التعليمات البرمجية المخصصة الخاصة بك. تتمثل الوظيفة الرئيسية للخطافات في السماح لك بتعديل أو إضافة ميزات إلى وورد بريس دون لمس الملفات الأساسية .
تمثيل رسومي لكيفية عمل وورد بريس Hooks
سوف تساعدك الخطافات على توسيع ووردبريس برمزك الخاص
تعمل واجهة برمجة تطبيقات وورد بريس Plugin على تشغيل وظائف خطافات وورد بريس. يمكنك استخدام الخطافات عن طريق استدعاء وظائف وورد بريس معينة تسمى وظائف الخطاف في حالات معينة أثناء وقت تشغيل وورد بريس.
باستخدام وظائف الخطاف ، يمكنك تجميع التعليمات البرمجية المخصصة الخاصة بك ضمن وظيفة رد الاتصال وتسجيلها بأي خطاف. بمجرد التسجيل ، سيتم تشغيل رد الاتصال هذا أينما كان الخطاف ، مما يسمح لك بزيادة ميزات وورد بريس الافتراضية أو استبدالها.
يعد موقع الخطاف في عملية تنفيذ التعليمات البرمجية عاملاً مهمًا. ستتعرف على المزيد حول أهميتها في الأقسام القادمة.
كن مدمنًا على #webdev باستخدام هذا الدليل لخطافات وورد بريس. ⚡️
انقر للتغريد
نوعان من خطافات وورد بريس: الإجراءات والمرشحات
تشمل وورد نوعين من السنانير دعا تطبيقات و المرشحات . تتيح لك الإجراءات القيام بشيء ما في نقاط محددة مسبقًا في وقت تشغيل وورد بريس ، بينما تتيح لك الفلاتر تعديل أي بيانات تتم معالجتها بواسطة وورد بريس و return.
يتم تعريف الإجراءات في كود وورد بريس على النحو التالي:
do_action( 'action_name', [optional_arguments] );
في action_nameسلسلة هو اسم العمل. يمكنك تحديد [optional_arguments]المتغير لتمرير وسيطات إضافية إلى وظيفة رد الاتصال. إذا لم يتم تحديد هذا الحقل ، فستكون قيمته الافتراضية فارغة.
على سبيل المثال: إن do_action( ‘wp_head’ )العمل يمكن أن يكون مدمن مخدرات في لتشغيل التعليمات البرمجية المخصصة في كل مرة ورد بمعالجة رأس الموقع . هذا الإجراء ليس له أي حجج أخرى.
يتم تعريف المرشحات في كود وورد بريس على النحو التالي:
apply_filters( 'filter_name', 'value_to_be_filtered', [optional_arguments] );
و filter_nameالسلسلة اسم مرشح، و value_to_be_filteredالمتغير هو القيمة التي يحتاجها لتتم تصفيته وعاد، و [optional_arguments]متغير يمكن أن تمر الحجج إضافية، تماما مثل مع الإجراءات.
مثال: إن apply_filters( ‘admin_footer_text’ , string $text )مرشح يمكن أن يكون مدمن مخدرات في لتعديل النص المعروض في تذييل المشرف. اعتبارًا من وورد بريس 5.4 ، ستعرض قيمته الافتراضية الجملة في تذييل منطقة المسؤول.Thank you for creating with وورد بريس.
ستتعلم كيفية ربط الإجراءات والفلاتر لاحقًا بالعديد من الأمثلة من وورد بريس Core.
بمجرد التوصيل ، يمكنك توجيه التعليمات البرمجية الخاصة بك للقيام بشيء ما أو تخصيصه على موقعك. على سبيل المثال ، يمكنك استخدام الخطافات لإرسال بريد إلكتروني آلي بعد نشر منشور ، أو تحميل أوراق أنماط مخصصة لتغيير مظهر موقعك.
تخيل التعلق بالأفعال والمرشحات على أنها بناء منزل
تساعدك أدوات وورد بريس على التفاعل مع موقع الويب الخاص بك أو تعديله
إن أبسط طريقة لفهم الخطافات هي تخيل موقع وورد بريس الخاص بك على أنه بناء منزل.
تشبه الخطافات استخدام رافعة لتحريك عناصر البناء ذهابًا وإيابًا. العناصر التي يتم نقلها هي وظائف رد الاتصال التي تتضمن الرمز المخصص الخاص بك . يمكن أن تساعدك هذه العناصر (أو الوظائف) في بناء المنزل أو تعديله.
مثال للتثبيت في إجراء ‘wp_head’ في وورد بريس باستخدام مثال المنزل
مثال للتثبيت في إجراء “wp_head” في وورد بريس
يمكن أن تكون وظائف رد الاتصال وظائف PHP عادية أو وظائف وورد بريس الافتراضية أو وظائف مخصصة تحددها أنت.
يمكننا فقط حمل عناصر معينة على ناقلات محددة متصلة بخطافات معينة. وبالتالي ، لا يمكن ربط الإجراءات إلا بوظائف الحركة. وبالمثل ، لا يمكن ربط المرشحات إلا بوظائف المرشح .
في حين أنه من الممل تغيير الخطافات والناقلات على الرافعة ، فإن وورد بريس يجعل الأمر سهلاً للغاية من خلال تضمين أكثر من 2200 نوع من الخطافات الافتراضية .
رسم بياني يوضح انتشار خطافات وورد بريس بمرور الوقت
يحتوي وورد بريس 5.1 على أكثر من 2200 خطاف أصلي (المصدر: آدم براون)
يمكنك العثور على خطافات منتشرة عبر وورد بريس Core ، مما يتيح لك النقر على الموضع المحدد حيث تريد ربط وتشغيل التعليمات البرمجية المخصصة الخاصة بك.
تتيح لك أدوات وورد بريس “ربط” عملية بناء الصفحة … وتمنحك مزيدًا من التحكم في ما تقوم بإنشائه.
انقر للتغريد
الخطافات مقابل الإجراءات مقابل المرشحات
حسب دليل البرنامج المساعد وورد بريس :
” الخطافات هي وسيلة لجزء واحد من التعليمات البرمجية للتفاعل / تعديل جزء آخر من التعليمات البرمجية … هناك نوعان من الخطافات: الإجراءات والمرشحات. “
هناك تناقض واسع النطاق مع كيف شروط هوك ، العمل ، و تصفية تستخدم. تمزج بعض البرامج التعليمية والأدلة مع الوظائف المرتبطة بها. أحد الأسباب الرئيسية لوجود هذا الالتباس هو الطبيعة المعقدة لكيفية عمل الخطافات.
حتى عندما تنظر بعناية داخل وورد بريس Core ، ستجد أنه لا يوجد فرق كبير بين إضافة الإجراءات والفلاتر. إليك الكود المصدري لوظيفة add_action () من wp-includes/plugin.phpالملف:
function add_action( $tag, $function_to_add, $priority = 10, $accepted_args = 1 ) {
return add_filter( $tag, $function_to_add, $priority, $accepted_args );
}
و add_action()ظيفة يدعو مجرد add_filter()وظيفة وإرجاع قيمة لها. لماذا ا؟ لأن كلاهما يعمل بشكل أساسي بنفس الطريقة ، باستثناء اختلاف واحد.
و apply_filters()ترجع قيمة التي يمكن أن تغير أنواع البيانات الموجودة، في حين أن do_action() أي شيء ترجع الدالة ( القيمة NULL في PHP ).
إذا كنت لا تزال في حيرة من أمرك ، فلا تقلق! بمجرد الانتهاء من النصف الأول من هذه المقالة ، سيكون كل شيء واضحًا. سنلتزم بالمصطلحات الرسمية لـ وورد بريس Codex لأنها واضحة ودقيقة وعالمية.
في الوقت الحالي ، تعرف على روتين الخطاف الموضح أدناه.
رسم بياني يمثل “روتين خطاف” نموذجي في وورد بريس
روتين الخطاف: الخطافات ووظائف الخطاف ووظائف الاستدعاء
دعنا نقسم الاختلافات بين الإجراءات والخطافات.
خطافات ووردبريس
أجراءات المرشحات
تُستخدم الإجراءات لتشغيل وظائف مخصصة في نقطة معينة أثناء تنفيذ وورد بريس Core. تُستخدم المرشحات لتعديل أو تخصيص البيانات التي تستخدمها وظائف أخرى.
يتم تحديد / إنشاء الإجراءات بواسطة الوظيفة do_action( ‘action_name’ )الموجودة في كود وورد بريس. يتم تحديد / إنشاء المرشحات بواسطة الوظيفة apply_filters( ‘filter_name’, ‘value_to_be_filtered’ )الموجودة في كود وورد بريس.
تسمى الإجراءات أيضًا بـ Action hooks . تسمى المرشحات أيضًا عوامل التصفية .
لا يمكن ربط الإجراءات إلا بوظائف الحركة. على سبيل المثال add_action()، remove_action(). لا يمكن ربط المرشحات إلا بوظائف التصفية. على سبيل المثال add_filter()، remove_filter().
لا تحتاج دوال الإجراء إلى تمرير أي وسيطات إلى وظائف رد الاتصال الخاصة بها. تحتاج وظائف التصفية إلى تمرير وسيطة واحدة على الأقل إلى وظائف رد الاتصال الخاصة بها.
يمكن أن تؤدي وظائف الإجراء أي نوع من المهام ، بما في ذلك تغيير سلوك طريقة عمل وورد بريس. توجد وظائف التصفية فقط لتعديل البيانات التي تم تمريرها إليها بواسطة المرشحات.
وظائف العمل يجب أن returnلا شيء. ومع ذلك ، يمكنهم echoإخراج قاعدة البيانات أو التفاعل معها. يجب أن returnتتغير وظائف التصفية كإخراج. حتى إذا كانت وظيفة التصفية لا تغير شيئًا ، فلا يزال يتعين returnعليها الإدخال غير المعدل.
يمكن للإجراءات تنفيذ أي شيء تقريبًا ، طالما أن الكود صالحًا. يجب أن تعمل المرشحات بطريقة منعزلة ، حتى لا يكون لها أي آثار جانبية غير مقصودة.
الملخص: يقاطع أحد الإجراءات عملية تنفيذ التعليمات البرمجية العادية للقيام بشيء ما بالمعلومات التي يتلقاها ، لكنه لا يُرجع شيئًا ، ثم يخرج. الملخص: يقوم المرشح بتعديل المعلومات التي يتلقاها ، ويعيدها مرة أخرى إلى وظيفة ربط الاتصال ، ويمكن للوظائف الأخرى استخدام القيمة التي يقوم بإرجاعها.
في بعض الأحيان ، يمكنك استخدام إجراء أو عامل تصفية لتحقيق نفس الهدف. على سبيل المثال ، إذا كنت ترغب في تعديل النص في منشور ما ، فيمكنك تسجيل وظيفة رد الاتصال باستخدام إجراء publish_post وتغيير محتوى المنشور عند حفظه في قاعدة البيانات .
// define the callback function to change the text
function change_text_callback() {
// add the code to change text here
}
// hook in to the 'publish_post' action with the add_action() function
add_action( 'publish_post', 'change_text_callback' );
أو يمكنك تسجيل وظيفة رد اتصال أخرى باستخدام مرشح المحتوى لتعديل محتوى المنشور قبل عرضه في المتصفح.
// define the callback function to modify the text
function change_text_another_callback( $content ) {
// add the code to change text here and then return it
return $filtered_content;
}
// hook in to 'the_content' filter with the add_filter() function
add_filter( 'the_content', 'change_text_another_callback');
طريقتان مختلفتان لهما نفس النتيجة. معرفة متى تستخدم أحدهما على الآخر هو مفتاح أن تكون مطور وورد بريس جيداً .
كيف تعمل خطافات ووردبريس؟
كان مثال المنزل بسيطًا بما يكفي لفهم الوظائف الأساسية للخطافات ، لكنه لا يوضح مدى تعقيد كيفية عملها. الأهم من ذلك هو مفاهيم موقع الخطاف والخصوصية.
أفضل مثال على ذلك هو تخيل معالجة صفحة ويب وورد بريس كتجميع سيارة. على عكس تصنيع السيارة ، الذي يستغرق وقتًا ، فإن تجميع صفحة ويب يكون فوريًا تقريبًا.
رسم يوضح أن تجميع صفحة ويب يشبه تجميع مركبة
يشبه تجميع صفحة ويب تجميع سيارة
يشبه إلى حد كبير كيفية تجميع السيارة جزءً تلو الآخر في خط تجميع حديث ، يتم تجميع صفحة ويب وورد بريس عنصرًا تلو الآخر بواسطة الخادم والعميل.
يشبه وورد بريس Core محرك السيارة والهيكل والأساسيات الأخرى ، حيث يعمل على تشغيل الوظائف “الأساسية” لموقع الويب.
يمكن أن يكون لديك موقع ويب وظيفي باستخدام وورد بريس Core فقط ، ولكن أين المتعة في ذلك؟ تحتاج إلى إضافة ميزات مثيرة إلى الموقع. حيث أن وورد الإضافات و الموضوعات خطوة في، وكلاهما استخدام السنانير على نطاق واسع.
في المثال أعلاه ، كل محطة مرقمة تشبه خطافًا داخل وورد بريس Core. هناك نوعان من المحطات ، مثل الإجراءات والفلاتر. تتضمن كل محطة نوعًا معينًا من الفتحات التي لا تقبل سوى أدوات معينة ، تشبه وظائف العمل ووظائف التصفية.
يتم وضع جميع المحطات على فترات متكررة من أجل النمطية والكفاءة.
اعتمادًا على المتطلبات في منصب معين ، يمكننا إرفاق (أو ربط) الأداة الأنسب للوظيفة في تلك المحطة المحددة. تشبه هذه الأدوات وظائف رد الاتصال المستخدمة للتفاعل مع وورد بريس أو تعديله.
يمكن لبعض الأدوات تغيير عمل السيارة بشكل كبير ، مثل عمليات الاسترجاعات المسجلة للإجراءات. يتم استخدام الأدوات الأخرى فقط لتخصيص مظهر السيارة ، مثل عمليات الاسترجاعات المسجلة في المرشحات.
يعد استخدام الأدوات المناسبة في المحطات المناسبة أمرًا بالغ الأهمية لبناء سيارة من الدرجة الأولى. بنفس الطريقة ، تساعدنا الخطافات في تخصيص وورد بريس وفقًا لاحتياجاتنا الفريدة.
إذا قمت بتوسيع هذا القياس ، فإن المكونات الإضافية تشبه إضافة ميزات مفيدة للسيارات مثل الوسائد الهوائية ، ووحدة التحكم في الترفيه ، ونظام التحكم عن بعد بدون مفتاح ، وما إلى ذلك (مثل هذه لتحسين وظائف WooCommerce ). تتشابه السمات مع تخصيص الجزء المرئي من السيارة ، مثل التصميم العام ووظيفة الطلاء والحافات وما إلى ذلك (إليك كيفية تخصيص سمة وورد بريس الخاصة بك ).
أين تسجل الخطافات ووظائفها؟
هناك طريقتان موصى بهما لإضافة الخطافات في وورد بريس:
الإضافات: قم بإنشاء المكون الإضافي الخاص بك وأضف كل التعليمات البرمجية المخصصة بداخله.
سمات الطفل: قم بتسجيل وظائف الخطافات ورد الاتصال في ملف نسق الطفلfunctions.php الخاص بك .
في هذا البرنامج التعليمي ، لنبدأ بإنشاء مكون إضافي. للقيام بذلك ، قم بإنشاء مجلد جديد في /wp-content/plugins/دليلك.
أقوم بتسمية المكون الإضافي الخاص بي salhooks، ولكن يمكنك تسميته بأي شيء تريده. وفقًا لإرشادات وورد بريس ، تحتاج إلى إنشاء ملف PHP بنفس الاسم ( salhooks.php) داخل دليل البرنامج المساعد الخاص بك.
أضف حقول الرأس التالية إلى ملف البرنامج المساعد الخاص بك لتسجيله في وورد بريس. يمكنك معرفة المزيد حول متطلبات رأس المكون الإضافي في وورد بريس Codex.
<strong><?php</strong>
/*
Plugin Name: Salhooks
Version : 1.0
Description: Demonstrating WordPress Hooks (Actions and Filters) with multiple examples.
Author : Salman Ravoof
Author URI : https://www.salmanravoof.com/
License : GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: salhooks
*/
//=================================================
// Security: Abort if this file is called directly
//=================================================
if ( !defined('ABSPATH') ) {
die;
}
احفظ هذا الملف ثم قم بتنشيط المكون الإضافي في لوحة معلومات وورد بريس الخاصة بك . سأستخدم هذا المكون الإضافي داخل تثبيت وورد بريس محلي لتوضيح كيفية عمل الخطافات.
كملاحظة جانبية ، يمكنك أيضًا تحرير ملفات وورد بريس Core مباشرة لتسجيل الخطافات. ومع ذلك ، لا يوصى بذلك حيث سيتم الكتابة فوق جميع التعليمات البرمجية المخصصة في كل مرة تقوم فيها بتحديث وورد بريس . يجب ألا تضيف خطافات داخل السمة الأم لنفس السبب.
استخدام خطافات ووردبريس
ربط وورد بريس في حد ذاته لا يفعل شيئًا. إنه موجود فقط في الكود ، في انتظار بعض وظائف الخطاف لتنشيطه. للاستفادة من الخطاف ، تحتاج إلى استدعاء وظيفتين أخريين على الأقل.
أولاً ، تحتاج إلى تسجيل الخطاف بوظيفة الخطاف والإشارة إلى وظيفة رد الاتصال داخلها. وبعد ذلك تحتاج إلى تحديد وظيفة رد الاتصال التي ذكرتها سابقًا في وظيفة الخطاف. سيقوم وورد بريس بتشغيل وظيفة رد الاتصال هذه في كل مرة يتم فيها تشغيل الخطاف.
لا يهم الترتيب الذي تحدد به هذه الوظائف ، ولكن من الجيد وضعهما بالقرب من بعضهما البعض.
الإجراءات والمرشحات لها وظائف ربط مميزة. من الآن فصاعدا، دعونا تشير إليها بوصفها وظائف العمل و تصفية وظائف . كما سترى ، لديهم متطلبات بناء الجملة والمعلمات الخاصة بهم.
ربط العمل
ربط مرشح
قم بتخصيص صفحة تسجيل الدخول إلى وورد بريس باستخدام الخطافات
ربط العمل
توفر الإجراءات طريقة لتشغيل التعليمات البرمجية المخصصة الخاصة بك في نقطة معينة في تنفيذ وورد بريس Core أو المكونات الإضافية أو السمات.
وظيفة الإجراء add_action ()
يمكنك تسجيل وظيفة رد الاتصال بإجراء ما باتباع الخطوات التالية:
حدد وظيفة رد الاتصال مع الكود المخصص بداخلها. ستعمل وظيفة رد الاتصال هذه عندما يتم تشغيل أي إجراء تم تسجيله من أجله أثناء تنفيذ كود وورد بريس.
ربط وظيفة رد الاتصال الخاصة بك إلى الإجراء الذي تريده مع add_action()الوظيفة. وفقًا لـ وورد بريس Codex ، تحتاج وظيفة add_action () إلى تمرير معلمتين على الأقل:
اسم الإجراء المطلوب ربطه.
اسم وظيفة رد الاتصال التي سيتم تشغيلها عند تشغيل الإجراء.
و add_action()أيضا يقبل وظيفة معلمتين اختياري لتحديد priorityو number of arguments. سنناقش كلاهما لاحقًا.
من الممارسات الجيدة تسمية معلمات وظيفة رد الاتصال الخاصة بك بأقرب ما يمكن من المعلمات التي تم تمريرها بواسطة وظيفة الخطاف.
لنلقِ نظرة على مثال لاستخدام add_action()الدالة.
// define the callback function, the arguments are optional
function example_callback( $arg1, $arg2 ) {
// make your code do something with the arguments
}
// hook the callback function to the 'example_action'
add_action( 'example_action', 'example_callback', [priority], [no_of_args] );
// 'priority' and 'number of arguments' are optional parameters
مثال على ربط إجراء
يتضمن وورد بريس إجراءًا مدمجًا يسمى init والذي يتم تشغيله بعد انتهاء وورد بريس من التحميل والمصادقة على المستخدم ، ولكن قبل إرسال أي ترويسات. تستخدم العديد من المكونات الإضافية هذا الخطاف كنقطة بداية لإنشاء مثيل لها لأن معظم ميزات وورد بريس الرئيسية قد انتهت من التحميل بحلول الوقت الذي يقوم فيه وورد بريس بتشغيل هذا الإجراء.
يحتوي وورد بريس على إجراء مشابه يسمى admin_init . يتم تشغيله أثناء تهيئة شاشة المسؤول ، بينما يتم تشغيل initالإجراء فقط بعد انتهاء تحميل وورد بريس.
لنقم بتشغيل رمز مخصص echoلرسالة بسيطة أثناء تنفيذ initالإجراء. هيريس كيفية القيام بذلك:
function custom_callback_function(){
// add your custom code here to do something
echo 'I will be fired on WordPress initialization';
}
add_action( 'init', 'custom_callback_function' );
يمكنك رؤية الرسالة تتكرر في الزاوية العلوية اليسرى من تثبيت وورد بريس المحلي الخاص بي .
صدى رسالة باستخدام رابط الإجراء init في وورد بريس
ليست بهذا الجميل ، لكنها بداية رائعة!
البحث عن الإجراءات التي يدعمها وورد بريس
يتضمن وورد بريس إجراءات في كل مرة يقوم فيها بشيء ما ، مثل قيام المستخدم بتسجيل الدخول أو نشر منشور جديد . يمكنك العثور على قائمة شاملة لجميع الإجراءات التي يديرها وورد بريس في صفحة مرجع الإجراء / واجهة برمجة تطبيقات البرنامج المساعد .
صفحة مرجع الإجراءات من قسم Plugin API في وورد بريس Codex
هناك إجراء لكل استخدام تقريبًا
قسم Codex جميع الإجراءات المدرجة هناك إلى فئات مختلفة ورتبها من الأول إلى الأخير في ترتيب تنفيذ وورد بريس.
في معظم الحالات ، لن تفعل العديد من هذه الإجراءات أي شيء حيث لا يوجد شيء مرتبط بها. ولكن إذا كنت في حاجة إليها ، فهي موجودة من أجلك لتتصل بها.
هل تشعر بالإرهاق من كل هذه الإجراءات؟ إنه طبيعي. كلما اكتسبت المزيد من الخبرة وتصفح شفرة مصدر وورد بريس Core ، سيصبح من الأسهل العثور على الخطاف المثالي لاحتياجاتك. فقط قم بالبحث عن المصطلح ” do_action ” وستجد الكثير من الإجراءات التي يمكنك ربطها .
معلمات إضافية لـ add_action ()
و add_action()ظيفة يمكن أن يقبل اثنين من أكثر المعلمات: واحدة لتحديد priorityوالآخر للوضع number of arguments. على الرغم من أنها اختيارية ، إذا تم استخدامها بشكل صحيح ، يمكن أن تكون مفيدة للغاية.
أولوية
تقوم المعلمة الإضافية الأولى التي تدعمها add_action()الوظيفة بتعيين priority. يمكن أن تكون هذه المعلمة عددًا صحيحًا موجبًا فقط. كلما انخفض رقم الأولوية ، كلما تم تشغيل الوظيفة مبكرًا. قيمته الافتراضية هي 10 إذا لم تحددها.
لمعرفة كيفية عملها ، دعنا نسجل ثلاث وظائف رد نداء initللإجراء ، ولكن لكل منها أولويات مختلفة.
// priority is set to 9, which is lower than 10, hence it ranks higher
add_action( 'init', 'i_am_high_priority', 9 );
// if no priority is set, the default value of 10 will be used
add_action( 'init', 'i_am_default_priority');
// priority is set to 11, which is higher than 11, hence it ranks lower
add_action( 'init', 'i_am_low_priority', 11 );
في الأمثلة أعلاه ، سيتم تشغيل وظيفة رد الاتصال مع أقل رقم أولوية أولاً وسيتم تشغيل آخر رقم له أعلى رقم. إذا كانت أولوياتهم هي نفسها ، فسيتم تشغيلهم بالترتيب الذي قمت بتسجيلهم به.
تلعب الأولوية دورًا مهمًا عندما يمكن لخطاف واحد أن يكون له وظائف رد اتصال متعددة مسجلة به. لتجنب النتائج غير المتوقعة ، يمكنك تعيين أولوية لكل وظيفة رد اتصال ، بحيث يتم إطلاقها بالترتيب الذي تريدها.
عدد الحجج
بشكل افتراضي ، add_action()ستتلقى أي دالة رد نداء مسجلة من خلال الوظيفة وسيطة واحدة فقط. ومع ذلك ، قد تحتاج أحيانًا إلى تمرير بيانات إضافية إلى وظيفة رد الاتصال.
لهذا السبب add_action()تقبل الوظيفة معلمة اختيارية لتعيين عدد الوسائط.
من الأمثلة الرائعة لعرض هذا الإجراء comment_post . يتم تنفيذ هذا الإجراء فورًا بعد أن يضيف وورد بريس تعليقًا إلى قاعدة البيانات . إذا لم تقم بتعيين number of argumentsالمعلمة ، فسيمرر قيمة واحدة فقط إلى وظيفة رد الاتصال ، والتي ستكون في هذه الحالة comment_ID.
// register the hook with 'priority' and 'number of arguments' parameters
add_action( 'comment_post', 'show_message_function', 10, 3 );
// define the callback function
function show_message_function( $comment_ID, $comment_approved, $commentdata ) {
// check whether a comment is approved with the second parameter
if( 1 === $comment_approved ){
// runs the code only if the comment is approved
}
}
إذا قمت بتعيين عدد من الحجج المعلمة إلى 3 كما في المثال أعلاه، فإن وظيفة عمل تمر ثلاث قيم: comment_ID، comment_approvedو commentdata.
يعيّن وورد بريس comment_approvedالقيمة على 1 للتعليقات المعتمدة ، و 0 في حالة عدم الموافقة ، و ” البريد العشوائي ” إذا تم وضع علامة على التعليق على أنه بريد عشوائي .
و commentdataالمتغير هو مجموعة يتضمن كافة البيانات تعليق، مثل اسم المؤلف تعليق أو عنوان بريده الإلكتروني، على شبكة الإنترنت، ومحتوى التعليق نفسه. يمكنك التحقق من وورد بريس Codex للعثور على جميع أزواج المفتاح والقيمة المضمنة في مصفوفة “بيانات التعليق” .
يمكن أن يكون لديك العديد من الوسائط كما تريد ، ولكن تحتاج وظيفة رد الاتصال والدالة add_action()إلى تحديد نفس عدد الوسائط.
من خلال تمرير معلمات إضافية إلى وظيفة رد الاتصال ، يمكنك فعل المزيد باستخدام الكود الخاص بك. على سبيل المثال ، يمكنك التحقق مما إذا تمت الموافقة على تعليق أم لا وإرسال نص التعليق تلقائيًا إلى المسؤول في حالة الموافقة عليه . لا يمكن القيام بذلك دون تحديد الوسائط الإضافية لأن وظيفة رد الاتصال لن تتمكن من الوصول إلى comment_contentالبيانات.
إذا كنت لا تريد تعيين الأولوية ، ولكنك تريد فقط تغيير عدد الوسائط ، فلا تزال بحاجة إلى تعيين أولوية. فقط استخدم قيمته الافتراضية (على سبيل المثال 10).
كيف يستخدم وورد بريس Core الإجراءات
يستخدم وورد بريس Core نفسه العديد من الإجراءات المضمنة لأداء وظائف مختلفة.
خذ الإجراء wp_head على سبيل المثال. يتم تشغيله عندما يخرج وورد بريس قسم رأس صفحات الويب (الكود الذي ينتقل بين <head>و </head>).
يمكنك العثور على معظم وظائف عمل وورد بريس Core المتعلقة wp_headبالربط في wp-includes/default-filters.phpالملف. لقد بحثت في الكود وقمت بتجميع قائمة بجميع add_action()الوظائف التي تستدعي wp_headالإجراء.
add_action( 'wp_head', 'rest_output_link_wp_head', 10, 0 );
add_action( 'wp_head', '_wp_render_title_tag', 1 );
add_action( 'wp_head', 'wp_enqueue_scripts', 1 );
add_action( 'wp_head', 'wp_resource_hints', 2 );
add_action( 'wp_head', 'feed_links', 2 );
add_action( 'wp_head', 'feed_links_extra', 3 );
add_action( 'wp_head', 'rsd_link' );
add_action( 'wp_head', 'wlwmanifest_link' );
add_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
add_action( 'wp_head', 'locale_stylesheet' );
add_action( 'wp_head', 'noindex', 1 );
add_action( 'wp_head', 'print_emoji_detection_script', 7 );
add_action( 'wp_head', 'wp_print_styles', 8 );
add_action( 'wp_head', 'wp_print_head_scripts', 9 );
add_action( 'wp_head', 'wp_generator' );
add_action( 'wp_head', 'rel_canonical' );
add_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 );
add_action( 'wp_head', 'wp_custom_css_cb', 101 );
add_action( 'wp_head', 'wp_site_icon', 99 );
add_action( 'wp_head', 'wp_no_robots' );
هذه الكثير من وظائف رد الاتصال مرتبطة بإجراء واحد فقط. يعد الضبط priorityهنا أمرًا بالغ الأهمية للتأكد من تشغيل أهم الوظائف المرتبطة أولاً.
في المثال أعلاه ، يعد تحميل البرامج النصية wp_enqueue_scripts()بوظيفة رد الاتصال أكثر أهمية (الأولوية = 1) من تحميل العلامات الوصفية لرمز الموقع wp_site_icon()بوظيفة رد الاتصال (الأولوية = 99).
معلومات
جميع وظائف رد الاتصال المستخدمة في المثال أعلاه هي وظائف وورد بريس. يمكنك استخدامها في أي من التعليمات البرمجية الخاصة بك أيضًا. قم بزيارة صفحة مرجع الوظيفة في وورد بريس Codex لمزيد من المعلومات.
وظائف العمل الأخرى
بينما add_action()هي وظيفة العمل الأكثر استخدامًا ، إلا أن هناك العديد من الوظائف الأخرى المفيدة بنفس القدر. دعونا نرى كيف تعمل جميعها.
has_action ()
تتحقق وظيفة الإجراء هذه مما إذا كان قد تم ربط إجراء ما. يقبل معلمتين. الأول هو اسم العمل. المعلمة الثانية اختيارية وهي اسم وظيفة رد الاتصال.
has_action( 'action_name', 'function_to_check' );
إذا حددت المعلمة الأولى فقط ، فإنها ترجع trueإذا تم ربط أي دالة بالمعامل action_name.
ولكن إذا حددت أيضًا المعامل الثاني ، فسيعود falseإذا لم يتم تسجيل وظيفة رد الاتصال المحددة في الإجراء المذكور.
إذا عثرت على وظيفة رد الاتصال المرفقة بخطاف الإجراء ، فستعيد المجموعة priority(عددًا صحيحًا) لتلك الوظيفة على خطاف الإجراء هذا.
فعل ()
لقد واجهنا وظيفة العمل هذه من قبل. يستخدمه وورد بريس لتحديد جميع إجراءاته الافتراضية ، مما يتيح للوظائف الأخرى ربطها. تمامًا مثل وورد بريس ، يمكنك أيضًا استخدام do_action()الوظيفة لإنشاء إجراء مخصص جديد عن طريق تحديد اسم إجراء جديد كمعامل.
do_action( 'action_name', [argument1], [argument2] );
مجرد التصريح عن هذه الوظيفة لن تفعل أي شيء من تلقاء نفسها. لكنها ستبقى في الكود ، في انتظار وظائف العمل الأخرى لتنشيطها. يعد تمرير أي وسيطات إضافية أمرًا اختياريًا ، ولكن من المهم إذا كنت تريد استخدام وظائف رد الاتصال الخاصة بك.
do_action_ref_array ()
تتطابق وظيفة الإجراء هذه مع do_action()، باستثناء اختلاف واحد. يجب أن تكون أي وسيطات يتم تمريرها عبرها مصفوفة. عندما يكون لديك الكثير من الوسيطات لتمريرها أو عندما تكون وسيطاتك موجودة بالفعل في مصفوفة ، فإن هذه الوظيفة مفيدة للغاية.
// here's an example array
$arguments_array = array( 'arg_1', 'foo', true, 'arg_4' );
do_action_ref_array( 'example_action', $arguments_array );
نظرًا لأن مصفوفات PHP هي خريطة مرتبة ، تأكد من أن الوسائط التي تمررها بالترتيب الصحيح.
مثال على استخدام هذه الوظيفة العملية هو الإجراء admin_bar_menu . يمكن ربطه لإضافة عناصر شريط الإدارة المختلفة أو معالجتها أو إزالتها. يتم تعريف جميع عناصر شريط الإدارة كعناصر مصفوفة.
فعل_عمل ()
إذا كنت تريد حساب عدد مرات إطلاق أي إجراء ، فيمكنك استدعاء وظيفة الإجراء هذه.
did_action( 'action_name' );
هذه الدالة ترجع قيمة عدد صحيح.
و did_action()ظيفة هو مفيد للغاية عندما كنت ترغب في تشغيل وظيفة رد الاتصال فقط في المرة الأولى يتم تشغيل هذا العمل وأبدا مرة أخرى.
function example_callback_function() {
if( did_action( 'example_action' ) === 1 ) {
// checks if the 'example_action' hook is fired once, and only runs then, and never again!
}
}
add_action('example_action', 'example_callback_function');
تزيل وظيفة الإجراء هذه وظيفة رد الاتصال المرتبطة بالإجراء المحدد. على سبيل المثال ، يمكنك استخدام هذه الوظيفة لإزالة وظائف وورد بريس الافتراضية المرتبطة بإجراءات مدمجة واستبدالها بوظائفك الخاصة.
remove_action( 'action_name', 'function_to_be_removed', [priority] );
هناك بعض المتطلبات الأساسية لاستدعاء remove_action()الوظيفة:
و function_to_be_removedو priorityالمعلمات يجب أن تكون نفس تلك التي استخدمت في الأصل في add_action()وظيفة.
لا يمكنك استدعاء remove_action()الوظيفة مباشرة. تحتاج إلى الاتصال به من داخل وظيفة أخرى.
إذا تم تسجيل وظيفة رد الاتصال من فصل دراسي ، فإن إزالتها لها متطلبات أخرى. يمكنك التحقق من وثائق وورد بريس Codex لمزيد من التفاصيل.
لا يمكنك إزالة وظيفة رد الاتصال قبل تسجيلها أو بعد تشغيلها.
فيما يلي مثال لكيفية استخدام WooCommerce لوظيفة الإجراء هذه لإزالة الصورة المصغرة الافتراضية للمنتج من صفحة المتجر الرئيسية.
remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10 );
تعمل وظيفة العمل هذه على إزالة كل شيء مرتبط بإجراء ما. معلمة الأولوية اختيارية.
remove_all_actions( 'action_name', [priority] );
تذكر أنه لا يمكن استدعاء هذه الوظيفة من الإجراء الذي ترغب في إلغاء تسجيل وظائف رد الاتصال منه. هذا من شأنه أن يسبب حلقة لا نهائية. يمكنك ربط إجراء تم إطلاقه مسبقًا لتشغيل هذه الوظيفة دون أي أخطاء.
فعل_عمل ()
تتحقق وظيفة الإجراء هذه مما إذا كان الإجراء المحدد قيد التشغيل أم لا. تقوم بإرجاع قيمة منطقية ( trueأو false).
// check whether the 'action_name' action is being executed
if ( doing_action( 'action_name' ) ) {
// execute your code here
}
يمكنك ترك action_nameالمعلمة فارغة للتحقق مما إذا كان يتم تنفيذ أي إجراء. سيعود في trueكل مرة يتم فيها إطلاق أي إجراء.
// check if any action is running and do something
if ( doing_action() ) {
// the code here is run when any action is fired
}
الإجراءات مثال 1: إظهار رسالة الصيانة لزوار الموقع الخاص بك
في بعض الأحيان ، من الأفضل أن تجعل موقعك في وضع عدم الاتصال وأن تضع صفحة تحت الصيانة . لحسن الحظ ، يوفر وورد بريس طريقة سهلة للقيام بذلك.
// show a maintenance message for all your site visitors
add_action( 'get_header', 'maintenance_message' );
function maintenance_message() {
if (current_user_can( 'edit_posts' )) return;
wp_die( '<h1>Stay Pawsitive!</h1><br>Sorry, we\'re temporarily down for maintenance right meow.' );
}
دعنا نكسر الكود ونتابع كل خطوة:
get_header هو إجراء يتم تشغيله قبل تحميل ملف قالب الرأس الخاص بالموقع. إنه إجراء مثالي للربط به إذا كنت تريد مقاطعة تحميل الموقع الرئيسي.
اربط في get_headerالعمل باستخدام add_action()الوظيفة مع maintenance_message()وظيفة رد الاتصال.
حدد maintenance_message()وظيفة رد الاتصال.
current_user_can( ‘edit_posts’ )هي وظيفة اختبار قدرة المستخدم التي تتحقق مما إذا كان المستخدم الحالي قد قام بتسجيل الدخول ويمكنه تحرير المنشورات . كل مستخدم مسجل على موقع وورد بريس باستثناء أولئك الذين لديهم أدوار مشترك لديه القدرة على تحرير المنشورات. هناك طرق أخرى قوية لإجراء هذا الفحص ، لكننا سنلتزم بهذه الطريقة البسيطة هنا.
استخدم وظيفة wp_die () الافتراضية لإنهاء تنفيذ وورد بريس بأمان وعرض صفحة HTML بها رسالة خطأ. يمكنك استخدام بناء جملة HTML في معلمة رسالة الخطأ لتنسيقها.
بعد حفظ الرمز في المكون الإضافي المخصص الخاص بي ، قمت بتحميل تثبيت وورد بريس المحلي الخاص بي في وضع التصفح الخاص. و الصيانة تحت الصفحة هو نجاح!
إظهار صفحة تحت الصيانة لزوار موقعك
إظهار رسالة خطأ لزوار الموقع
يتم تحميل الموقع بنجاح إذا قمت بتسجيل الدخول أثناء اجتياز اختبار قدرة المستخدم. يمكنك الآن متابعة العمل على إصلاح موقعك بينما يعرض للزائرين المنتظمين هذه الصفحة.
مثال 2: إخفاء عناصر قائمة لوحة المعلومات من المستخدمين غير الإداريين
إذا كنت تدير مدونة متعددة المؤلفين أو تدير موقعًا لعملائك ، فقد تحتاج إلى إخفاء بعض قوائم المشرفين من لوحة تحكم وورد بريس للمستخدمين غير المسؤولين . يمكنك القيام بذلك عن طريق التعلق admin_menuبالحركة.
// remove specific dashboard menus for non-admin users
add_action( 'admin_menu', 'hide_admin_menus' );
function hide_admin_menus() {
if (current_user_can( 'create_users' )) return;
if (wp_get_current_user()->display_name == "Salman") return;
remove_menu_page( 'plugins.php' );
remove_menu_page( 'themes.php' );
remove_menu_page( 'tools.php' );
remove_menu_page( 'users.php' );
remove_menu_page( 'edit.php?post_type=page' );
remove_menu_page( 'options-general.php' );
}
في ما يلي عرض تفصيلي خطوة بخطوة لمقتطف الشفرة أعلاه:
admin_menu هو إجراء يتم تشغيله قبل تحميل قائمة المسؤول في منطقة لوحة معلومات وورد بريس.
اربط في admin_menuالإجراء باستخدام add_action()الوظيفة باستخدام hide_admin_menus()وظيفة رد الاتصال.
و hide_admin_menus()تحدد وظيفة رد منطق التعليمات البرمجية. يتم تشغيله في كل مرة admin_menuينطلق فيها الحدث .
داخل وظيفة رد الاتصال ، current_user_can( ‘create_users’ )تتحقق الوظيفة مما إذا كان المستخدم الذي قام بتسجيل الدخول هو مشرف. نظرًا لأن مسؤولي الموقع فقط لديهم create_userالقدرة ، تنتهي الوظيفة returnببيان إذا كان المستخدم مسؤولاً.
و wp_get_current_user () وظيفة وورد باسترداد الكائن المستخدم الحالي. باستخدام هذه الوظيفة ، يمكننا التحقق مما إذا كان المستخدم الذي قام بتسجيل الدخول لديه مجموعة معينة display_name. هذا سطر اختياري ، في حالة رغبتك في حذف مستخدمين غير إداريين معينين من الحظر بسبب وظيفة رد الاتصال هذه.
و remove_menu_page () وظيفة وورد يزيل القوائم المشرف على مستوى عال. في مثال الشفرة أعلاه ، أقوم بإزالة قوائم المشرف التالية: المكونات الإضافية والسمات والأدوات والمستخدمون والصفحات والخيارات.
بعد حفظ ملف البرنامج المساعد ، إليك لقطة من لوحة معلومات وورد بريس مع مسؤول قام بتسجيل الدخول.
لوحة تحكم وورد بريس الافتراضية لجميع المستخدمين
لوحة تحكم مسؤول وورد بريس الافتراضية
وإليك لقطة شاشة للوحة تحكم وورد بريس مع مستخدم غير إداري قام بتسجيل الدخول.
إخفاء قوائم الإدارة الحساسة للمستخدمين غير المسؤولين باستخدام الإجراءات
إخفاء عناصر قائمة المسؤول الحساسة من المستخدمين غير المسؤولين
هذا الحل يخفي فقط عناصر قائمة المسؤول المحددة من الظهور في لوحة معلومات وورد بريس. لا يزال بإمكان جميع المستخدمين الوصول إليها عن طريق إدخال عناوين URL القائمة في المستعرضات الخاصة بهم.
لتعطيل أدوار مستخدم معينة من الوصول إلى قوائم معينة ، يلزمك تعديل إمكاناتها.
ربط مرشح
توفر المرشحات طريقة للتعليمات البرمجية المخصصة الخاصة بك لتعديل البيانات التي تستخدمها وظائف وورد بريس الأخرى. على عكس الإجراءات ، تحتاج الوظائف الموصولة بالفلاتر إلى إرجاع قيمة.
وظيفة التصفية add_filter ()
يمكنك ربط وظيفة رد الاتصال بمرشح باتباع الخطوات التالية:
حدد وظيفة رد الاتصال التي سيتم تشغيلها عندما يقوم وورد بريس بتشغيل عامل التصفية. تحتاج وظائف رد الاتصال الخاصة بالفلاتر إلى تحديد وسيطة واحدة على الأقل ، حيث تقوم جميع المرشحات بتمرير قيمة واحدة على الأقل إلى وظائف رد الاتصال الخاصة بها.
قم بتسجيل وظيفة رد الاتصال في مرشح مع add_filter()الوظيفة. سيهتم المرشح باستدعاء وظيفة رد الاتصال. وفقًا لـ وورد بريس Codex ، تحتاج وظيفة add_filter () إلى تمرير معلمتين على الأقل:
اسم المرشح المراد ربطه.
اسم وظيفة رد الاتصال التي سيتم تشغيلها عند تشغيل الفلتر.
و add_filter()أيضا يقبل وظيفة معلمتين اختيارية إضافية لتحديد priorityو number of arguments. تعمل هذه المعلمات بنفس الطريقة التي تعمل بها مع add_action()الوظيفة.
فيما يلي مثال لكيفية استخدام add_filter()الوظيفة لربط دالة رد الاتصال بمرشح.
// define the filter callback function with at least one argument passed
// the number of arguments that you can pass depends on how the filter is defined
function filter_callback_function( $arg1, $arg2 ) {
// make your code do something with the arguments and return something
return $something;
}
// now hook the callback function to the 'example_filter'
add_filter( 'example_filter', 'filter_callback_function', [priority], [no_of_args] );
// '10' is the default priority set for the callback function
// and '1' is the default number of arguments passed
مثال على ربط مرشح
يوفر وورد بريس عامل تصفية يسمى login_message لتصفية الرسالة المعروضة على صفحة تسجيل الدخول أعلى نموذج تسجيل الدخول. يمكن أن تحتوي القيمة التي يتم إرجاعها بواسطة عامل التصفية هذا على ترميز HTML .
دعنا نربط login_messageالفلتر ونعدل الرسالة المعروضة على شاشة تسجيل الدخول.
// show a custom login message above the login form
function custom_login_message( $message ) {
if ( empty( $message ) ) {
return "<h2>Welcome to Let's Develop by Salman Ravoof! Please log in to start learning.</h2>";
}
else {
return $message;
}
}
add_filter( 'login_message', 'custom_login_message' );
و if-elseجاء في الشيكات ظيفة رد ما إذا تم تعيين رسالة تسجيل الدخول بالفعل، ومعظمهم من البرنامج المساعد أو موضوع آخر. في مثل هذه الحالات ، تقوم وظيفة رد الاتصال بإرجاع القيمة الأصلية دون إجراء أي تغييرات. هذه طريقة واحدة لتجنب التعارض مع المكونات الإضافية أو السمات الأخرى.
يمكنك رؤية الرسالة معروضة أعلى نموذج تسجيل الدخول في صفحة تسجيل الدخول إلى وورد بريس .
إظهار رسالة تسجيل دخول مخصصة أعلى مربع نموذج تسجيل الدخول
إظهار رسالة تسجيل دخول مخصصة أعلى نموذج تسجيل الدخول
يمكنك تصميم جميع العناصر في صفحة تسجيل الدخول من خلال إدراج أوراق الأنماط المخصصة في قائمة الانتظار. سيسمح لك القيام بذلك بتخصيص صفحة تسجيل الدخول الافتراضية إلى وورد بريس بشكل كامل.
ستتعلم كيفية تحميل أوراق الأنماط المخصصة باستخدام الإجراءات في قسم “تخصيص صفحة تسجيل الدخول إلى وورد بريس باستخدام الخطافات”.
البحث عن المرشحات التي يدعمها وورد بريس
في أي مكان يقوم وورد بريس بمعالجة البيانات أو تعديلها ، يمكنك بالتأكيد العثور على عامل تصفية للربط به وتغييره. فكر في المرشحات كواجهة بين قاعدة بيانات وورد بريس والمتصفح.
يمكنك العثور على قائمة شاملة لجميع المرشحات التي يدعمها وورد بريس في صفحة مرجع البرنامج المساعد / Filter .
صفحة مرجع المرشحات من قسم Plugin API
يوفر وورد بريس مجموعة متنوعة من المرشحات للتوصيل بها
يتم تقسيم جميع المرشحات المدرجة هناك إلى فئات متعددة ومرتبة من أعلى إلى أسفل في ترتيب تنفيذ وورد بريس.
إذا كنت ترغب في العثور على عوامل تصفية لربطها في شفرة مصدر وورد بريس ، فقم بإجراء بحث عن المصطلح ” application_filters ” وستحصل على الكثير من النتائج. يعد وورد بريس Code Reference أيضًا مكانًا رائعًا للبحث عن كل شيء مضمن في وورد بريس ، بما في ذلك الإجراءات والفلاتر.
كيف يستخدم وورد بريس Core المرشحات
يستخدم وورد بريس Core نفسه الكثير من المرشحات المدمجة لتعديل البيانات المستخدمة بواسطة وظائفه المختلفة.
ضع في اعتبارك عامل التصفية_content على سبيل المثال. يقوم بتصفية محتوى المنشور بعد استعادته من قاعدة البيانات وقبل عرضه على المتصفح.
تمامًا كما هو الحال مع الإجراءات ، يمكنك العثور على معظم وظائف مرشح وورد بريس Core المتعلقة the_contentبالربط في wp-includes/default-filters.phpالملف.
فيما يلي قائمة بجميع add_filter()الوظائف الأساسية المرتبطة بالفلتر the_content:
add_filter( 'the_content', 'do_blocks', 9 );
add_filter( 'the_content', 'wptexturize' );
add_filter( 'the_content', 'convert_smilies', 20 );
add_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'shortcode_unautop' );
add_filter( 'the_content', 'prepend_attachment' );
add_filter( 'the_content', 'wp_make_content_images_responsive' );
add_filter( 'the_content', 'do_shortcode', 11 ); // AFTER wpautop().
لاحظ الأولوية المحددة لبعض وظائف رد الاتصال.
تريد أن تعرف كيف زدنا من حركة المرور لدينا أكثر من 1000 ٪؟
انضم إلى أكثر من 20000 آخرين ممن يتلقون رسائلنا الإخبارية الأسبوعية مع نصائح من الداخل حول وورد بريس!
إشترك الآن
على سبيل المثال ، تحلل وظيفة do_blocks () أي كتل ديناميكية في محتوى المنشور وتعيد عرضها لتكون متوافقة مع محرر القوالب الجديد في وورد بريس . تم تحديد أولوية أعلى من الافتراضية (10) للتأكد من أن المحتوى جاهز للكتلة قبل تشغيل الوظائف الأخرى.
تم تعيين وظيفة convert_smilies () للعمل بأولوية منخفضة حيث أن مهمتها هي تحويل الوجوه الضاحكة النصية إلى صور متحركة. إن تشغيله في النهاية بعد تصفية كل محتوى المنشور أمر منطقي.
حقيقة ممتعة: الرموز القصيرة هي مجموعة فرعية من المرشحات. يأخذون المدخلات من الرمز القصير ، ويعالجونه ، ثم يعيدون الإخراج إليه. تعرف على المزيد حول الرموز القصيرة في هذا الدليل النهائي لأكواد وورد بريس القصيرة .
وظائف المرشح الأخرى
بينما add_filter()هي وظيفة المرشح الأكثر استخدامًا ، إلا أن هناك العديد من وظائف التصفية المفيدة الأخرى. دعونا نناقشهم جميعًا بعمق.
has_filter ()
تتحقق هذه الوظيفة مما إذا كان المرشح المحدد مرتبطًا بأي وظيفة. يقبل معلمتين. المعلمة الأولى هي إدخال اسم المرشح. المعلمة الثانية اختيارية وهي مخصصة لإدخال اسم وظيفة رد الاتصال.
has_filter( 'filter_name', 'function_to_check' );
إذا حددت المعلمة الأولى فقط ، فستعود trueإذا filter_nameتم ربطها بأي دالة.
ومع ذلك ، إذا حددت كلا المعلمتين ، فسوف تعود falseإذا كانت وظيفة رد الاتصال المذكورة غير مسجلة في المرشح المحدد. إذا عثرت على وظيفة رد الاتصال المسجلة مع المرشح ، فستعيد المجموعة priority(عددًا صحيحًا) لتلك الوظيفة على هذا المرشح.
أحد التطبيقات الممكنة has_filter()للوظيفة هو التحقق مما إذا كان أي مرشح قد تم ربطه بالفعل ، وبناءً على ذلك المضي قدمًا في تنفيذ الكود.
// check to see if 'the_content' filter has been hooked
if ( ! has_filter( 'the_content' ) {
// hook the filter if and only if it hasn't been hooked before
add_filter( 'the_content', 'modify_the_content' );
}
وظيفة المرشح هذه مثل do_action()وظيفة العمل. سيتم تشغيل أي وظائف رد اتصال مرتبطة بهذا المرشح أينما كانت هذه الوظيفة في كود وورد بريس.
يمكنك أيضًا استخدام هذه الوظيفة لإنشاء عامل تصفية مخصص جديد عن طريق تحديد اسم المرشح وقيمة المرشح كمعلمات.
apply_filters( 'filter_name', 'value_to_filter', [argument1], [argument2] );
لا تنسَ تحديد أي وسيطات إضافية إذا كنت تريد نقلها إلى وظائف رد الاتصال. تستخدم معظم المرشحات وسيطة واحدة فقط ، لذلك من السهل تفويت تحديد العوامل الإضافية.
application_filters_ref_array ()
هذه الوظيفة تشبه apply_filters()الوظيفة ، باستثناء أن جميع الوسائط التي تقبلها مجمعة كمصفوفة.
// an example array
$arguments_array = array( 'some_value', 'foo', false, 'another_value' );
apply_filters_ref_array( 'example_filter', $arguments_array );
يمكن أن تكون وظيفة التصفية هذه مفيدة عندما يكون لديك العديد من الوسائط لتمريرها أو إذا كانت جميعها موجودة بالفعل في مصفوفة. تأكد من أن الوسائط داخل المصفوفة بالترتيب الصحيح.
عامل التصفية الحالي ()
تسترد وظيفة التصفية هذه اسم عامل التصفية الحالي أو الإجراء الجاري تشغيله. لا تحتاج إلى تحديد أي معلمات لأنها تعمل ضمن وظيفة رد الاتصال.
فيما يلي مثال على استخدامه:
function example_callback() {
echo current_filter(); // 'the_title' will be echoed
return
}
add_filter( 'the_title', 'example_callback' );
على الرغم من اسمها ، يمكن لهذه الوظيفة استرداد اسم كل من الإجراءات والمرشحات.
remove_filter ()
تزيل وظيفة المرشح هذه وظيفة رد الاتصال المرفقة بالفلتر المحدد. إنها تعمل تمامًا مثل remove_action()الوظيفة. يمكنك استخدامه لحذف وظائف وورد بريس الافتراضية المسجلة بفلتر معين ، واستبدالها إذا لزم الأمر بوظائفك الخاصة.
remove_filter( 'filter_name', 'function_to_be_removed', [priority] );
لإلغاء ربط دالة رد الاتصال المرتبطة بمرشح ، يجب أن تكون المعلمات function_to_be_removedand priorityمتطابقة مع الوسائط المستخدمة عند ربط وظيفة رد الاتصال.
إذا تمت إضافة عامل التصفية من داخل فئة ، وهو ما يحدث عادةً عند إضافتها بواسطة المكونات الإضافية ، فأنت بحاجة إلى الوصول إلى متغير الفئة لإزالة عامل التصفية .
// access the class variable first, and then remove the filter through it
global $some_class;
remove_filter( 'the_content', array($some_class, 'class_filter_callback') );
دعنا نتحقق من مثال رائع على remove_filter()العمل.
و المساعد WooCommerce يستخدم wc_lostpassword_url () وظيفة الدعوة إلى مدمن مخدرات في lostpassword_url مرشح لإعادة توجيه ” فقدت كلمة المرور الخاصة بك؟ ”محاولات من قبل المستخدمين.
يتطلب الأمر قيام أي مستخدم بالنقر فوق هذا الارتباط إلى صفحة أمامية مخصصة بعنوان URL /my-account/lost-password. بدون هذا الفلتر ، سيتم نقلهم إلى عنوان URL القياسي لتسجيل الدخول إلى وورد بريس على /wp-login.php.
لنفترض أنك تريد إعادة تعيين هذه الوظيفة وإرسال المستخدمين إلى صفحة استرداد كلمة المرور الافتراضية أو إلى صفحة منفصلة تمامًا. يمكنك إزالة وظيفة رد الاتصال هذه على النحو التالي:
remove_filter( 'lostpassword_url', 'wc_lostpassword_url', 10 );
remove_all_filters ()
تقوم وظيفة المرشح هذه بإزالة جميع وظائف رد الاتصال المسجلة في المرشح.
remove_all_filters( 'filter_name', [priority] );
إنها تشبه remove_all_actions()الوظيفة.
شعبية المتقدم مقتطفات المساعد تستخدم هذه الدالة لإزالة كافة الوظائف الافتراضي مدمن مخدرات إلى the_excerptو get_the_excerptالمرشحات. بعد القيام بذلك ، يقوم بعد ذلك بتوصيل وظيفة رد الاتصال الخاصة به بالمرشح.
// Ensure our filter is hooked, regardless of the page type
if ( ! has_filter( 'get_the_excerpt', array( $advanced_excerpt, 'filter_excerpt' ) ) ) {
remove_all_filters( 'get_the_excerpt' );
remove_all_filters( 'the_excerpt' );
add_filter( 'get_the_excerpt', array( $advanced_excerpt, 'filter_excerpt' ) );
}
تتحقق وظيفة الفلتر هذه من تنفيذ الفلتر المحدد في الوقت الحالي.
if ( doing_filter( 'save_post' ) ) {
// run your code here
}
تقوم بإرجاع قيمة منطقية ( trueأو false).
يجب أن تلاحظ الفرق بين هذه الوظيفة current_filter()والدالة ، والتي تُرجع اسم المرشح أو الإجراء الجاري تشغيله (سلسلة).
المرشحات مثال 1: إضافة عامل تصفية الألفاظ النابية للتعليقات
يمكن أن تكون إدارة جميع التعليقات على موقع وورد بريس الخاص بك عملية مرهقة. و COMMENT_TEXT فلتر يتيح لك إعداد قواعد لتعديل التعليقات قبل انهم المطبوعة على الشاشة.
التعليقات التي تحتوي على كلمات نابية وهمية لا تزال غير خاضعة للرقابة
التعليقات التي لم تتم تصفيتها مع تمييز الألفاظ النابية الوهمية
يمكنك توجيه وورد بريس لإزالة أي شتائم تلقائيًا قبل عرضها على زوار موقعك. دعنا نذهب اليها.
// hook into the 'comment_text' filter with the callback function
add_filter( 'comment_text', 'the_profanity_filter' );
// define a callback function to filter profanities in comments
function the_profanity_filter( $comment_text ) {
// define an array of profane words and count how many are there
$profaneWords = array('fudge', 'darn', 'pickles', 'blows', 'dangit');
$profaneWordsCount = sizeof($profaneWords);
// loop through the profanities in $comment_text and replace them with '*'
for($i=0; $i < $profaneWordsCount; $i++) {
$comment_text = str_ireplace( $profaneWords[$i], str_repeat('*', strlen( $profaneWords[$i]) ), $comment_text );
}
return $comment_text;
}
فيما يلي تفصيل للشفرة سطراً بسطر:
comment_text هو عامل تصفية يسمح لك بتعديل نص التعليق قبل أن يعرضه المتصفح. يمكنك تسجيل وظيفة رد الاتصال الخاصة بك معها لتصفية إخراجها.
و add_filter()تسمح وظيفة لك ربط إلى comment_textتصفية وإرفاق دالة رد عليه.
the_profanity_filter()هو اسم وظيفة رد الاتصال. تقبل معلمة واحدة فقط ، وهي عبارة عن سلسلة تحتوي على نص التعليق. حدد هذه الوظيفة المخصصة بمنطق الكود المناسب.
قم بتخزين جميع الكلمات البذيئة في مصفوفة PHP تسمى profaneWords. يمكنك إضافة العديد من الكلمات كما تريد إلى هذه المجموعة. أقوم بتخزين حجم هذه المصفوفة في profaneWordsCountالمتغير بمساعدة دالة sizeof () PHP .
قم بإجراء تكرار عبر جميع الكلمات النابية واستخدم وظيفة str_ireplace () الافتراضية في PHP لاستبدال أي من الألفاظ النابية المتطابقة *بالرموز. نظرًا لأن هذه وظيفة استبدال سلسلة غير حساسة لحالة الأحرف ، فلا داعي للقلق بشأن الكتابة بالأحرف الكبيرة. تحقق من طرق مختلفة لإجراء بحث واستبدال .
استخدم returnلإخراج نص التعليق المصفاة.
احفظ التغييرات على ملف البرنامج المساعد المخصص الخاص بك وأعد تحميل أي منشور بالتعليقات. profaneWordsيجب الآن استبدال جميع الكلمات التي قمت بتضمينها في المصفوفة برموز “*” .
التعليقات التي تحتوي على كلمات نابية وهمية والتي تخضع جميعًا للرقابة الآن
فرض الرقابة على الألفاظ النابية في التعليقات التي تحمل رموز “*”
ستظل التعليقات الأصلية متاحة كما هي في قاعدة البيانات. يقوم هذا المرشح بتعديل نص التعليق فقط قبل إخراجه إلى الواجهة الأمامية.
التعليق الأصلي يبقى دون تغيير في خلفية الموقع
التعليق الأصلي على خلفية الموقع
بمجرد توصيلك بالفلتر الصحيح ، يمكنك القيام بالكثير من الأشياء الرائعة باستخدامه.
على سبيل المثال ، يمكنك أيضًا استخدام comment_textعامل التصفية لإزالة أي عناوين URL من جميع التعليقات (تأكد من قراءة هذا الدليل التفصيلي حول كيفية إيقاف التعليقات غير المرغوب فيها في وورد بريس ).
أو يمكنك ربط عامل التصفية pre_comment_approved ووضع علامة على التعليقات على أنها موافق عليها أو بريد عشوائي أو عشوائي بناءً على معايير محددة مسبقًا.
المرشحات مثال 2: إدراج المحتوى بعد المنشور
لقد رأيت بالفعل كيف يستخدم وورد بريس the_contentعامل التصفية لتعديل محتوى المنشور أو الصفحة. دعنا نستخدم نفس الفلتر لإضافة شيء ما في نهاية كل منشور.
// hook into 'the_content' filter with a callback function
add_filter( 'the_content', 'insert_content_below' );
// define the callback function to insert something below the post
function insert_content_below( $content ) {
// check to see if we're inside the main loop in a single post
if ( is_single() && in_the_loop() && is_main_query() ) {
return $content . "<h3 style=\"text-align: center;\">Let me insert myself here</h3><p style=\"text-align: center;border: 3px solid #5333ed;\">I'll appear after the post. You can insert anything here. Even HTML. Headers, links, images, scripts, I'll take them all and append it to the end of the post content. You can also give me a class, so you can style me easily with CSS style sheets.</p>" ;
}
return $content;
}
فهم منطق الكود في المثال أعلاه:
the_content يساعدك خطاف التصفية على انتزاع محتوى المنشور الحالي وتخصيصه.
استخدم add_filter()الوظيفة للربط في the_contentعامل التصفية باستخدام insert_content_below()وظيفة رد الاتصال.
حدد وظيفة رد الاتصال عن طريق تمرير محتوى المنشور الحالي كمعامل ( $content).
داخل وظيفة رد الاتصال ، تحقق من أنك تقوم فقط بتصفية المحتوى في الاستعلام الرئيسي ، وهو في هذه الحالة محتوى المنشور. إذا لم تتحقق من ذلك ، في بعض الأحيان تقوم الشفرة بتصفية المحتوى عن غير قصد من أماكن أخرى مثل الشريط الجانبي والتذييلات.
تحدد الشروط الشرطية is_main_query () و in_the_loop () ما إذا كان الاستعلام هو استعلام رئيسي ويحدث داخل حلقة وورد بريس الرئيسية.
يتحقق الشرطي is_single () مما إذا كان الاستعلام متعلقًا بمنشور واحد.
استخدم عامل تشغيل سلسلة سلاسل PHP ( $content . “your additions”) لإضافة عناصر إضافية إلى محتوى الصفحة.
returnالتعليق المصفاة إذا تم سحب جميع الشروط أعلاه. إذا لم يحدث ذلك ، فقم بإعادة المحتوى دون أي تغييرات.
احفظ ملف البرنامج المساعد الخاص بك ، وقم بتحميل أي منشور على موقعك ، وانتقل إلى النهاية.
تم إدراج محتوى إضافي بعد محتوى آخر
إدخال شيء في نهاية محتوى التدوينة
يمكنك استخدام نفس المنطق لإضافة أي شيء إلى بداية جميع مشاركاتك عن طريق عكس موضع معلمات سلسلة السلسلة ( “your additions” . $content).
هل تحتاج إلى استضافة سريعة وآمنة وصديقة للمطورين لمواقع عملائك؟ تم تصميم Kinsta مع وضع مطوري وورد بريس في الاعتبار ويوفر الكثير من الأدوات ولوحة تحكم قوية. تحقق من خططنا
قم بتخصيص صفحة تسجيل الدخول إلى وورد بريس باستخدام الخطافات
دعنا نستخدم كلاً من الإجراءات والفلاتر لتخصيص صفحة تسجيل الدخول الافتراضية إلى وورد بريس . سأقوم بإنشاء مكون إضافي جديد يسمى Sal Custom Login Page للقيام بذلك. يمكنك العثور على الكود المصدري الكامل لهذا المكون الإضافي في نهاية هذا القسم.
شاشة تسجيل الدخول النهائية المخصصة لـ وورد بريس
شاشة تسجيل الدخول إلى وورد بريس المخصصة النهائية
لنبدأ بإضافة حقول رأس المكون الإضافي القياسية وتسجيلها في وورد بريس.
<strong><?php</strong>
/*
Plugin Name: Sal Custom Login Page
Version: 1.0
Description: Demonstrating WordPress Hooks (Actions and Filters) by customizing the WordPress login page.
Author: Salman Ravoof
Author URI: https://www.salmanravoof.com/License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: sal-custom-login-page
*/
// enqueueing the custom style sheet on WordPress login page
add_action( 'login_enqueue_scripts', 'salhooks_login_stylesheet');
function salhooks_login_stylesheet() {
// Load the style sheet from the plugin folder
wp_enqueue_style( 'sal-custom-login-page', plugin_dir_url( __FILE__ ).'sal-custom-login-page-styles.css' );
}
أولاً ، اربط في الإجراء login_enque_scripts لإدراج ورقة الأنماط المخصصة في قائمة الانتظار . يتم تضمين أي برامج نصية أو أنماط تقوم بإدراجها في قائمة الانتظار هنا في قسم الرأس بصفحة تسجيل الدخول الخاصة بك.
إذا كنت ترغب في تحميل البرامج النصية وأوراق الأنماط المخصصة على الواجهة الأمامية لموقعك (بدلاً من الواجهة الخلفية للمسؤول أو منطقة تسجيل الدخول) ، فأنت بحاجة إلى ربط wp_enqueue_scriptsالإجراء. يمكنك قراءة المزيد حول هذا الموضوع في وورد الدستور و المادة Kinsta على كيفية استخدام wp_enqueue_scripts .
داخل salhooks_login_stylesheet()وظيفة رد الاتصال ، استخدم الدالة wp_enqueue_style () لتحميل ورقة الأنماط المخصصة ( sal-custom-login-page-styles.css) الموضوعة في دليل البرنامج المساعد نفسه. تجعل وظيفة plugin_dir_url (__FILE__) المضمنة في وورد بريس من السهل الحصول على مسار URL (بشرطة مائلة) من دليل البرنامج المساعد الحالي.
لن أشرح أنماط CSS المطبقة هنا ، ولكن يمكنك العثور عليها جميعًا في الكود المصدري المرتبط في نهاية هذا القسم.
// Custom login ERROR message to keep the site more secure
add_filter( 'login_errors', 'salhooks_remove_login_errors', 10 );
function salhooks_remove_login_errors() {
return 'Incorrect credentials. Please try again!';
}
بعد ذلك ، اربط بين مرشح login_errors لتغيير رسالة الخطأ التي تظهر عندما يقوم شخص ما بإدخال بيانات اعتماد غير صحيحة. ستؤدي تصفية رسالة الخطأ إلى منع المهاجمين من تخمين اسم المستخدم الخاص بك بسهولة.
// Remove the login form box shake animation for incorrect credentials
add_action( 'login_head', 'remove_login_error_shake' );
function remove_login_error_shake() {
remove_action( 'login_head', 'wp_shake_js', 12 );
}
في كل مرة يقوم شخص ما بإدخال بيانات اعتماد تسجيل دخول غير صحيحة ، يهتز مربع نموذج تسجيل الدخول بقوة. هذه خطوة اختيارية ، لكني قمت بتضمينها لتوضيح أنه يمكنك أيضًا إزالة ميزات معينة من صفحة تسجيل الدخول.
سوف تتعلم المزيد عن remove_action()و remove_filter()ظائف في القسم الأخير من هذه المادة.
// Change the logo and header link above the login form
add_filter( 'login_headerurl', 'salhooks_login_headerurl');
function salhooks_login_headerurl( $url ) {
$url = 'https://salmanravoof.com';
return $url;
}
add_filter( 'login_headertext', 'salhooks_login_headertext');
function salhooks_login_headertext( $text ) {
$text = 'Salman Ravoof';
return $text;
}
الخطوة الأخيرة هي تغيير عنوان URL والنص الخاصين برأس تسجيل الدخول. يمكنك ربط إلى login_headerurl و login_headertext المرشحات لتعديل لهم على حد سواء.
إذا كنت ترغب في البناء على هذا المكون الإضافي وإجراء المزيد من التجارب ، يمكنك تنزيل كود مصدر المكون الإضافي والبدء .
قائمة وموارد وورد بريس Hooks
من الصعب حفظ جميع الخطافات المختلفة التي يمتلكها وورد بريس. هناك الآلاف من الإجراءات والمرشحات المضمنة للتوصيل بها. ومن ثم ، فإن العثور على خطاف مناسب قد يبدو أحيانًا وكأنه مطاردة زبال.
لحسن الحظ ، هناك العديد من الموارد التي يمكنك استخدامها لتحديد الخطاف المثالي لاحتياجاتك.
دليل البرنامج المساعد وورد بريس – الخطافات
أول مكان للتعرف على الخطافات هو وورد بريس Codex ، وخاصة قسم الخطافات في كتيب البرنامج المساعد. هنا يمكنك العثور على معلومات أساسية حول الخطافات والروابط لإكمال التوثيق حول جميع الإجراءات والمرشحات.
قسم خطافات وورد بريس في دليل البرنامج المساعد
ابدأ في تعلم الخطافات باستخدام كتيب البرنامج المساعد وورد بريس
ضع إشارة مرجعية على هذه الارتباطات المفيدة من كتيب البرنامج المساعد لتسريع البحث:
واجهة برمجة تطبيقات البرنامج المساعد – مرجع وظيفة الخطافات
البرنامج المساعد API – مرجع الإجراء
واجهة برمجة تطبيقات البرنامج المساعد – مرجع عامل التصفية
سيعطيك كل من مرجع الإجراء وصفحات مرجع عامل التصفية قائمة بجميع الروابط التي يتم تشغيلها عادةً أثناء طلب وورد بريس معين.
على سبيل المثال ، يمكنك العثور على كل الروابط التي تم إطلاقها عند الوصول إلى صفحة المسؤول ، أو عند التعامل مع مرفقات صفحة المنشور ، أو مع الفئات .
مرجع كود ووردبريس
يشتمل وورد بريس Codex أيضًا على أداة بحث سهلة الاستخدام للعثور على جميع وظائفه وخطافاته وطرقه وفئاته. تسرد هذه الصفحة أيضًا المكونات الجديدة والمحدثة في أحدث إصدار من وورد بريس. توجه إلى هنا أولاً إذا كنت تريد معرفة ما يحدث داخل وورد بريس.
أداة البحث عن كود مرجع ووردبريس في كودكس ووردبريس
ابحث عن أي شيء داخل وورد بريس هنا
فهرس وورد بريس Hooks الخاص بآدم آر براون
يقوم فهرس خطافات وورد بريس هذا بفرز جميع الخطافات حسب النوع وإصدار وورد بريس الذي ظهر لأول مرة وما إذا كانت مهملة.
فهرس وورد بريس Hooks الخاص بآدم آر براون
فهرس وورد بريس Hooks الخاص بآدم آر براون
سيظهر لك فرز الخطافات بترتيب مظهرها أن أقدم خطافات وورد بريس لا تزال هي الأكثر استخدامًا. إذا كنت جديدًا في تطوير وورد بريس ، فإن التعرف على هذه الإجراءات والمرشحات الشائعة هو أسرع طريقة للحاق بالركب.
على الرغم من أن هذا الفهرس لم يتم تحديثه منذ إصدار وورد بريس 5.1 ، إلا أنه لا يزال من المفيد تصفح جميع الروابط الرئيسية.
هل ما زلت تجد صعوبة في العثور على الخطاف الذي تريده؟ يعد البحث عبر الإنترنت باستخدام الكلمة الأساسية الصحيحة دائمًا طريقة جيدة للبدء. إذا فشل كل شيء آخر ، يمكنك دائمًا البحث في كود وورد بريس.
البحث عن خطافات مسجلة في صفحة وورد بريس
كما رأينا ، يحتوي وورد بريس على الكثير من الخطافات المتاحة ، ولكن ليس كل خطاف في كل صفحة. إذا تمكنت من العثور على الإجراءات والفلاتر التي يمكنك ربطها في صفحة معينة ، فقد ربحت نصف المعركة.
بينما يمكنك استخدام أدوات تصحيح أخطاء PHP المتقدمة مثل xdebug و PHPCS للمساعدة في ذلك ، هناك أدوات تطوير أبسط مثل Debug Bar و Query Monitor والتي يمكنك تشغيلها داخل وورد بريس.
شريط التصحيح مع الإجراءات الإضافية وعوامل التصفية
يعد Debug Bar مكونًا إضافيًا رسميًا لبرنامج وورد بريس يضيف قائمة تصحيح إلى شريط المسؤول. فإنه يدل على تحذيرات PHP والإشعارات وطلبات ذاكرة التخزين المؤقت، الاستفسارات الخلية ، و غيرها من المعلومات المفيدة التصحيح .
معلومات
لم يتم تحديث هذا التوصيل مؤخرًا ، ولم يتم اختباره مع أحدث الإصدارات الرئيسية من وورد بريس. نذكره كمكوِّن إضافي مفيد لمعرفة المزيد عن خطافات وورد بريس. استخدمه في بيئة انطلاق .
البرنامج المساعد وورد بريس Debug Bar وورد بريس
البرنامج المساعد وورد بريس Debug Bar وورد بريس
بعد تثبيت المكون الإضافي ، تحتاج إلى إضافة مقتطف الشفرة أدناه إلى wp-config.phpملف موقعك لتمكين ميزات التصحيح الخاصة به.
define( 'WP_DEBUG', true ); // tracks PHP Warnings and Notices
define( 'SAVEQUERIES', true ); // tracks and displays MySQL queries
يجب أن تشاهد الآن خيار قائمة التصحيح يظهر في شريط الإدارة. سيؤدي النقر فوقها إلى نقلك إلى لوحة التحكم الخاصة به حيث يمكنك رؤية العديد من الاستعلامات وذاكرة التخزين المؤقت المرفقة بالصفحة التي قمت بالوصول إليها من خلالها.
إظهار قائمة التصحيح في شريط الإدارة
قائمة “تصحيح الأخطاء” في شريط إدارة وورد بريس
بعد ذلك ، تحتاج إلى تثبيت المكون الإضافي Debug Bar Actions and Filters Addon . إنه امتداد مفيد سيضيف علامتي تبويب أخريين إلى لوحة معلومات شريط التصحيح لعرض الإجراءات والفلاتر التي تم تشغيلها في الطلب الحالي.
لوحة Action Hooks داخل لوحة معلومات شريط التصحيح
الإجراءات المدرجة في ترتيب التحميل للصفحة الحالية
ستدرج أيضًا جميع الوظائف المرتبطة بها مع تحديد أولوياتها.
المكون الإضافي لشريط التصحيح مع تثبيت ملحق الإجراءات والفلاتر
يتم سرد المرشحات بأولويتها ووظائف رد الاتصال المسجلة
يمكنك النقر فوق قائمة التصحيح من أي صفحة على موقعك لمعرفة جميع الإجراءات والمرشحات التي يمكنك ربطها بهذه الصفحة.
مراقبة الاستعلام
Query Monitor هي لوحة أدوات قوية للمطورين لـ وورد بريس. يمكنك استخدامه للتنقيب في الخطافات المتوفرة على الصفحة وترتيب التحميل الخاص بها.
البرنامج المساعد Query Monitor وورد بريس
البرنامج المساعد Query Monitor وورد بريس
على عكس شريط التصحيح ، لا يتعين عليك تثبيت أي أدوات إضافية لرؤية الإجراءات والفلاتر التي تم تشغيلها على صفحة معينة.
الوصول إلى مراقبة الاستعلام من شريط الإدارة
يمكنك الوصول إلى مراقب الاستعلام من شريط الإدارة
يمنحك مراقب الاستعلام أيضًا مزيدًا من المعلومات حول مكان إطلاق الخطاف بالضبط.
لوحة الخطافات والإجراءات في مراقبة الاستعلام
لوحة الخطافات والإجراءات في مراقبة الاستعلام
في عمود المكون ، يمكنك أن ترى أن معظم الخطافات مسجلة من Core. ولكن يتم تسجيل بعض الخطافات من قالب أو مكون إضافي. قد يتم تسجيل عدد قليل من الخطافات من أكثر من مكون.
يمكنك استخدام القوائم المنسدلة للخطاف والمكونات لعرض الخطافات التي تحتاجها فقط.
ملاحظة: يستخدم مراقب الاستعلام “الخطافات” كمصطلح جامع لكل من الإجراءات والفلاتر ، ولكنه يطلق على وظائف رد الاتصال المسجلة “الإجراءات”. هذا تعريف خاطئ من الناحية الفنية ويمكن أن يربكك ، لذا ضع ذلك في الاعتبار.
يمكنك القيام بأكثر من مجرد التحقق من جميع الاستعلامات والطلبات باستخدام مراقب الاستعلام. كما يتضمن ميزات متقدمة مثل سرد الأساليب، ومخطوطات، و اللغات ، المكالمات اياكس والشيكات قدرة المستخدم، و يدعو API REST .
خطاف “الكل”
يحتوي وورد بريس على خطاف خاص يسمى “all” يمكنك ربطه لتشغيل وظيفة رد الاتصال لكل خطاف واحد ، بغض النظر عما إذا كان مسجلاً معهم جميعًا. من المفيد تصحيح أخطاء الصفحة أو ما إذا كنت تريد معرفة وقت حدوث حدث معين.
على سبيل المثال ، يمكنك استخدام allالخطاف كما في المثال أدناه echoلجميع الإجراءات التي يتم تشغيلها.
// echo all the actions being run
function debug_helper_function(){
echo '<p>' . current_action() . '</p>';
}
add_action( 'all', 'debug_helper_function' );
و debug_helper_function()المحددة أعلاه سيتم تشغيل عند أي حرائق العمل. ستعطيك معرفة ما كان إجراء التشغيل الأخير فكرة أفضل عن المكان الذي تحتاج إلى النظر فيه.
أين يتم تخزين خطافات ووردبريس؟
يستخدم وورد بريس فئة WP_Hook لتنفيذ كيفية عمل الخطافات. تُستخدم هذه الفئة الأساسية للتعامل مع جميع إجراءات وفلاتر وورد بريس المضمنة. يمكنك العثور على جميع التعليمات البرمجية المتعلقة بهذه الفئة تقريبًا في ملف wp-include / class-wp-hook.php .
من الناحية الفنية ، فإن WP_Hookالفئة عبارة عن مصفوفة من الكائنات تشتمل على خصائص مثل عمليات الاسترجاعات والتكرارات والأولوية الحالية والمستوى المتداخل والممارسة. كما أنها تحدد الكثير من وظائف الخطاف المفيدة التي يمكن استدعاؤها باستخدام طرق WP_Hook .
لا يتعين على معظم مطوري وورد بريس القلق كثيرًا بشأن المكان الذي يخزن فيه وورد بريس الخطافات طالما أنهم يلتزمون بإرشادات واجهة برمجة تطبيقات البرنامج المساعد.
هناك نوعان من خطافات وورد بريس: الإجراءات والفلاتر ، وهذا الدليل يشرح بالضبط متى (وكيف!) لاستخدام كل واحدة 💥
انقر للتغريد
كيفية إنشاء خطافات وورد بريس المخصصة الخاصة بك
لقد رأيت الخطافات المختلفة التي يوفرها وورد بريس من خلال واجهة برمجة تطبيقات البرنامج المساعد. لقد نظرت أيضًا في كيفية استخدام الخطافات الافتراضية لإدخال التعليمات البرمجية الخاصة بك في وقت تشغيل وورد بريس.
إذا كنت مطورًا إضافيًا أو موضوعًا ، فمن الممارسات الجيدة أن توفر للمطورين الآخرين طريقة للتفاعل مع التعليمات البرمجية الخاصة بك بنفس الطريقة. تتيح لك الخطافات المخصصة القيام بذلك بالضبط. إنها تسمح للمطورين الآخرين بتوسيع وتعديل وظائف المكونات الإضافية والسمات الخاصة بك.
يعد إنشاء الإجراءات والفلاتر الخاصة بك أمرًا بسيطًا إلى حد ما. يمكنك استخدام نفس الوظائف التي يستخدمها وورد بريس Core لإنشاء الخطافات. لنلق نظرة على بعض الأمثلة.
كيفية إنشاء إجراءات مخصصة في وورد بريس
كيفية إنشاء عامل تصفية مخصص في وورد بريس
اصطلاح تسمية الخطافات المخصصة
عرض توضيحي مخصص للخطافات مع مكون إضافي قابل للتوسيع
العمل مع الخطافات المخصصة من مطوري الطرف الثالث
متى تستخدم الخطافات المخصصة؟
كيفية إنشاء إجراءات مخصصة في وورد بريس
استخدم do_action()الوظيفة لإنشاء خطاف إجراء مخصص. إليك كيف تفعل ذلك:
// the position where you insert your action is where it'll run when called
do_action( ' my_unique_custom_action' );
// continue with the rest of your code
الآن ، يمكن للمطورين الآخرين ربط الإضافة أو السمة الخاصة بك دون تعديل كود المصدر. كل ما عليهم فعله هو تسجيل وظائف رد الاتصال الخاصة بهم في الإجراء المخصص للمكون الإضافي الخاص بك باستخدام add_action()الوظيفة.
// the position where you insert your action is where it'll run when called
do_action( ' my_unique_custom_action' );
// continue with the rest of your code
تأكد من توثيق الخطافات المخصصة الخاصة بك بدقة ، وشرح ما يفعلونه بالتفصيل. بعد كل شيء ، فإن الاستخدام الرئيسي لإنشاء خطافات مخصصة هو مساعدة المطورين الآخرين على التفاعل مع التعليمات البرمجية الخاصة بك.
كيفية إنشاء عامل تصفية مخصص في وورد بريس
استخدم apply_filters()الوظيفة لإنشاء خطاف مرشح مخصص. إليك كيف يمكنك القيام بذلك:
$value_to_filter = "I'm a string, but this can be any PHP data type";
// filters modify a value and are typically tied to a predefined variable
apply_filters( 'my_custom_filter', $value_to_filter );
يجب أن تتضمن معلمات الفلتر المخصص معرفًا فريدًا وقيمة للتصفية. يمكن للمطورين الآخرين ربط الفلتر المخصص الخاص بك باستخدام add_filter()الوظيفة وتعديل القيمة التي تم تمريرها.
add_filter( 'my_custom_filter', 'some_callback_function' );
// define the callback function you mentioned in the above filter function
function some_callback_function( $value_to_filter ) {
// modify the passed value (or not)
return $value_to_filter; // returning a value is a must for filters
}
عندما تقوم بتعريف عامل التصفية المخصص الخاص بك ، تأكد من عدم وضعه قبل تحديد القيمة التي من المفترض أن يتم تصفيتها. إذا لم تحدد موضع الفلتر بشكل صحيح ، فسيتم استبدال القيمة المصفاة بالقيمة الافتراضية بعد ذلك.
اصطلاح تسمية الخطافات المخصصة
من المهم اختيار اسم فريد لجميع الخطافات المخصصة الخاصة بك. نظرًا لأن أي مكون إضافي أو سمة يمكن أن يكون لها خطافات مخصصة خاصة به ، فإن وجود أسماء ربط متطابقة يمكن أن يتسبب في تضارب التعليمات البرمجية مع نتائج غير متوقعة.
على سبيل المثال ، إذا قمت بتسمية الإجراء الخاص بك send_email، فمن المحتمل جدًا أن يقوم مطورو المكونات الإضافية الآخرين أيضًا باختيار نفس المصطلح لأنه ليس فريدًا بدرجة كافية. إذا قام أي موقع بتثبيت كل من الإضافات الخاصة بك والمكونات الإضافية للمطور الآخر ، فقد يتسبب ذلك في حدوث أخطاء يصعب تتبعها .
يمكنك إضافة بادئة لكل الخطافات المخصصة الخاصة بك بمعرف مشترك لإبقائها بسيطة وفريدة من نوعها. لذا ، بدلاً من ذلك send_email، يمكنك تسميته plugin_name_send_email( plugin_name_ هي البادئة الفريدة هنا).
عرض توضيحي مخصص للخطافات مع مكون إضافي قابل للتوسيع
لنقم بإنشاء مكون إضافي قابل للتوسيع (أو مكون إضافي قابل للتوصيل) يسمح للمطورين الآخرين بالتفاعل معه باستخدام خطافاته المخصصة.
سأقوم بتسمية هذا البرنامج المساعد Custom Hooks Demo . وتتمثل مهمتها الرئيسية في إخراج مربع اقتباس أينما قمت بإدخال رمز قصير. سيتضمن إجراءات مخصصة وعوامل تصفية في المواقع الصحيحة لتمكين المطورين الآخرين من تعديل وظائفها أو توسيعها.
يمكنك الرجوع إلى دليل الرموز القصيرة الخاصة بي في وورد بريس لمعرفة المزيد حول كيفية عمل الرموز القصيرة.
لنبدأ بالمكوِّن الإضافي القابل للتوسيع.
<strong><?php</strong>
/*
Plugin Name : Custom Hooks Demo
Description : Demonstrating how to create an extensible WordPress plugin using custom hooks.
Author : Salman Ravoof
Author URI : https://salmanravoof.com/
License : GPLv2 or later
License URI : https://www.gnu.org/licenses/gpl-2.0.html
Text Domain : custom-hooks-demo
*/
/**
* the [custom_hooks_demo] shortcode returns the HTML code for a quote box.
* @return string HTML code for a quote box
*/
add_shortcode( 'custom_hooks_demo', 'my_shortcode_callback' );
function my_shortcode_callback ( $arguments ) {
ob_start(); // start object buffering to collect all output before sending it to the browser
// set an action hook to run before you output anything
do_action( 'the_topmost_custom_action' );
// define your variables which you want to allow to be filtered
$quote_content = "Z.E.R.O. That's the number of people who'd like to have any website autoplay music on their browsers.";
$quote_author = "John Doenuts";
// create your custom filters after you've set the variables
$quote_content = apply_filters( 'custom_quote_content', $quote_content );
$quote_author = apply_filters( 'custom_quote_author', $quote_author );
// build the shortcode output template
echo "<div style=\"border:3px solid #5333ed;\"><blockquote style=\"margin:20px;border-color:#5333ed;\">";
echo $quote_content;
echo "<br><br>";
echo "― <strong>" . $quote_author . "</strong>";
echo "</blockquote></div>";
// set an action hook to run after you output everything
do_action( 'the_ending_custom_action' );
return ob_get_clean(); // get buffer contents, delete the buffer, and then stop buffering
}
تُستخدم add_shortcode()الوظيفة لإنشاء رمز قصير مخصص. ثم تقوم بتعريف وظيفة رد الاتصال للرمز القصير مع كل وظائف هذه الإضافة.
ob_start () هي دالة PHP تتيح التخزين المؤقت للإخراج. إنها ميزة مفيدة للغاية ترشد PHP إلى الاحتفاظ بأي إخراج في ذاكرة التخزين المؤقت للخادم بدلاً من إخراجها على الفور. يمكنك استخدامه لإنشاء كود HTML معقد وقابل للقراءة في PHP.
do_action( ‘the_topmost_custom_action’ )يحدد أول إجراء مخصص لك. لجعله مفيدًا ، تحتاج إلى تعريفه قبل أن يخرج المكون الإضافي أي شيء. يمكن للمطورين الآخرين ربط هذا الإجراء المخصص لتشغيل التعليمات البرمجية الخاصة بهم قبل أن يقوم هذا الرمز المختصر المخصص بطباعة أي شيء.
قم بإنشاء المتغيرات التي تريد تصفيتها. في هذا البرنامج المساعد ، هذه المتغيرات هي $quote_contentو $quote_author. كلاهما في هذا المثال ، ولكن يمكنك تعيينهما ليكونا أي نوع بيانات PHP (مثل عدد صحيح ، منطقي ، مصفوفة).
استخدم apply_filters()الوظيفة لإنشاء عوامل التصفية المخصصة الخاصة بك. نظرًا لأن جميع المرشحات ترجع قيمة ، يمكنك تعيين المتغيرات المحددة مسبقًا إلى القيمة المرجعة لعامل التصفية هذا. يمكن للمطورين الآخرين الآن ربط هذا المرشح لتعديل القيم الافتراضية للمتغيرات المحددة مسبقًا.
استخدم echoالعبارات لبناء إخراج الرمز المختصر الخاص بك سطراً بسطر. نظرًا لأننا قمنا بتمكين التخزين المؤقت للإخراج ، فلن تصل أي مخرجات إلى المتصفح على الفور.
do_action( ‘the_ending_custom_action’ )يحدد آخر إجراء مخصص لك. تحتاج إلى تعريفه في النهاية ، ولكن قبل إعادة جميع محتويات المخزن المؤقت.
ob_get_clean () هي دالة PHP افتراضية 3 في 1. سيقوم باسترداد محتويات المخزن المؤقت ، وإزالة جميع بيانات المخزن المؤقت ، ثم إيقاف التخزين المؤقت للإخراج. سوف returnيتم جمع محتويات المخزن المؤقت كسلسلة واحدة متسلسلة.
بمجرد الحفظ [custom_hooks_demo]والتفعيل ، ستؤدي إضافة الرمز القصير إلى محتوى المنشور الخاص بك إلى إخراج مربع اقتباس بالقيم الافتراضية.
مربع الاقتباس الأصلي كما تم إخراجه بواسطة الرمز المختصر المحدد في المكون الإضافي Custom Hooks Demo
مربع الاقتباس الأصلي باستخدام البرنامج المساعد Custom Hooks Demo
الآن ، لنقم بإنشاء مكون إضافي آخر يسمى Custom Hooks Demo Extension . سيتم ربطه بجميع الخطافات المخصصة التي تم إنشاؤها بواسطة المكون الإضافي السابق والقيام بشيء ما أو تعديله.
<strong><?php</strong>
/*
Plugin Name : Custom Hooks Demo Extension
Description : Demonstrating how you can extend WordPress plugin functionality with its custom hooks.
Author : Salman Ravoof
Author URI : https://salmanravoof.com/
License : GPLv2 or later
License URI : https://www.gnu.org/licenses/gpl-2.0.html
Text Domain : custom-hooks-demo-extension
*/
/**
* replace the quote content by hooking into the 'custom_quote_content' filter
*/
add_filter( 'custom_quote_content', 'new_quote_content_callback' );
function new_quote_content_callback( $content ) {
$content = "There are no bugs in programming. Only unexpected features.";
return $content;
}
/**
* replace the quote author by hooking into the 'custom_quote_author'
*/
add_filter( 'custom_quote_author', 'new_quote_author_callback' );
function new_quote_author_callback( $author ) {
$author = "Jane Doodle";
return $author;
}
/**
* add an image to the top of the shortcode output by hooking into the 'the_topmost_custom_action'
*/
add_action( 'the_topmost_custom_action', 'quote_image_callback' );
function quote_image_callback() {
$url = "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f9/Quote-right-cs.svg/75px-Quote-right-cs.svg.png";
echo '<div><img class="aligncenter" src="'.$url.'"></div>';
}
/**
* add a button below the shortcut output by hooking into the 'the_ending_custom_action'
*/
add_action( 'the_ending_custom_action', 'add_button_callback' );
function add_button_callback() {
echo '<div style="text-align:center;"><button name="nice">Nice Quote!</button></div>';
}
كما ترى ، لا يحتوي هذا الملحق الإضافي على أي شيء سوى وظائف العمل والتصفية التي يتم ربطها بالمكوِّن الإضافي الأصلي في الأماكن الصحيحة لإجراء التعديلات.
ويستخدم add_action()و add_filter()ظائف لتسجيل الوظائف رد مع الإجراءات المخصصة والمرشحات التي تم إنشاؤها من قبل المساعد الأصلي (على سبيل المثال the_topmost_custom_action، custom_quote_author).
مربع الاقتباس المعدل بعد تغيير البرنامج المساعد للإخراج الأصلي
ملحق ملحق يعدل مربع الاقتباس الأصلي
تتيح لك أدوات ربط الإجراءات المخصصة إدخال التعليمات البرمجية الخاصة بك على الفواصل الزمنية الصحيحة في المكون الإضافي الأصلي وتشغيل البرامج النصية الخاصة بك. هنا ، نضيف صورة في الأعلى وزرًا في الأسفل.
وبالمثل ، تتيح لك أدوات التصفية المخصصة تعديل قيم محتوى الاقتباس واسم المؤلف. النتيجة النهائية هي مكون إضافي قابل للتوسيع بالكامل من قبل أي شخص دون تعديل كود المصدر الخاص به.
العمل مع الخطافات المخصصة من مطوري الطرف الثالث
تمكن السنانير مخصصة الفردية الإضافات وورد و الموضوعات لنظام بيئي غني من الإضافات الموسعة. ضع في اعتبارك إضافة WooCommerce. يضيف وظائف التجارة الإلكترونية إلى وورد بريس ، ولكنه يتضمن أيضًا الكثير من الخطافات داخل الكود الخاص به .
مرجع WooCommerce Hook
إجراء WooCommerce ومرجع ربط عامل التصفية
WooCommerce لديها المئات من ملحقات و الإضافات التي تستخدم خطاطيف لبناء على وظائفها الأساسية وجعلها أفضل.
يمكنك استخدام هذه الامتدادات لدمج WooCommerce مع Stripe و MailChimp و Salesforce و Zapier وغير ذلك الكثير.
صفحة WooCommece في أشهر امتداداتها
تعمل الإضافات على توسيع وظائف WooCommerce
من الممارسات الجيدة التحقق من قسم التوثيق لملحقات وورد بريس الشائعة لمعرفة كيفية تنفيذها للخطافات المخصصة. بعض أهم اقتراحاتي هي Easy Digital Downloads و BuddyPress و Quiz and Survey Master و Gravity Forms .
متى تستخدم الخطافات المخصصة؟
اعتمادًا على المظهر أو المكون الإضافي الذي تقوم بإنشائه ، ومن هو المقصود ، قد تتساءل عما إذا كنت بحاجة إلى إضافة أي خطافات مخصصة.
من القواعد الأساسية الجيدة عند اتخاذ قرار بشأن إضافة خطافات مخصصة من عدمه التحقق مما إذا كانت تقدم أي مزايا قابلية للتوسعة للمطورين الآخرين. إذا لم يكن الأمر كذلك ، فمن الأفضل التأجيل حتى يطلب منك المطورون الآخرون إضافتهم.
يجب أن تكون على يقين شديد بشأن إضافة خطافات مخصصة إلى المكون الإضافي أو السمة الخاصة بك. بمجرد إصداره ، وإذا استخدمه مطورون آخرون بالفعل ، فلا يمكنك تغييره أبدًا دون كسر التوافق مع الإصدارات السابقة.
إزالة وظائف رد الاتصال من وورد بريس Hooks
لقد رأيت بالفعل أمثلة على كيفية إزالة وظائف رد الاتصال المسجلة في خطافات معينة. يمكن تسجيل عمليات الاسترجاعات هذه عن طريق المكونات الإضافية أو السمات أو حتى وورد بريس Core نفسه. دعونا نلقي نظرة على إزالة وظائف رد الاتصال المعلق بمزيد من الأمثلة.
لإزالة وظيفة رد الاتصال من الخطاف ، بناءً على ما إذا كانت مسجلة لإجراء أو عامل تصفية ، تحتاج إلى استخدام الوظائف remove_action()أو remove_filter().
أحد التحذيرات هو أنك تحتاج إلى استدعاء هذه الوظائف باستخدام المعلمات المتطابقة المستخدمة لتسجيل وظيفة رد الاتصال. بشكل أساسي ، قم بنسخ ولصق المعلمات من وظائفها add_action()أو add_filter()وظائفها.
أيضًا ، لا يمكنك إزالة وظائف رد الاتصال إلا بعد تسجيلها. إذا حاولت إزالتها قبل تسجيلها ، فستفشل عملية الإزالة. تحتاج إلى الحصول على أمر تنفيذ الخطافات بشكل صحيح.
لنفترض أنك تريد إزالة وظيفة رد الاتصال المسجلة بواسطة سمة تضيف سخامًا إلى موقعك ( هل تريد موقعًا سريعًا ، أليس كذلك؟).
function wp_bloated_callback_function() {
// some code that adds a lot of bloat to the site
}
add_action( 'template_redirect', 'wp_bloated_callback_function', 5 );
على سبيل المثال ، يمكن لوظيفة رد الاتصال أعلاه تحميل العديد من البرامج النصية وأوراق الأنماط غير الضرورية. ستؤدي إزالته إلى تعزيز أداء موقعك بشكل كبير .
ومع ذلك ، تحتاج إلى التأكد من أن remove_action()الوظيفة تعمل فقط بعد إجراء template_redirect . تتمثل إحدى طرق القيام بذلك في ربط الإجراء after_setup_theme حيث يتم تشغيله بعد template_redirectالإجراء.
function wp_remove_bloat() {
// ensure all parameters are identical to the original add_action() function
remove_action( 'template_redirect', 'wp_bloated_callback_function', 5 );
}
// ensure that remove_action() is called only after add_action()
add_action( 'after_setup_theme', 'wp_remove_bloat' );
و wp_bloated_callback_function()الآن سوف unhitch نفسه من template_redirectالعمل.
حالات خاصة لإزالة وظائف رد الاتصال
هناك ما هو أكثر من إزالة وظائف رد الاتصال من مجرد تعطيلها تمامًا. قد تحتاج أحيانًا إلى إزالتها مؤقتًا وتشغيل التعليمات البرمجية الخاصة بك ثم إضافتها مرة أخرى.
على سبيل المثال، save_post عمل حرائق في كل مرة wp_insert_post()و wp_publish_post()تسمى الوظائف. يمكنك العثور على كلاهما معرّف في wp-includes/post.phpالملف.
لذلك ، إذا كانت لديك وظيفة رد اتصال مرتبطة save_postبالإجراء ، وإذا اتصلت wp_insert_post()أو wp_publish_post()وظائف ضمن وظيفة رد الاتصال ، save_postفسيتم إطلاق الإجراء عدة مرات.
function some_callback_function( $post_id, $post ) {
// do something here
wp_insert_post( [some_array] ); // this function also calls the 'save_post' action
// maybe do something more
}
add_action( 'save_post', 'some_callback_function', 10, 2 );
يمكن للدالة التي تستدعي الإجراء الذي يستدعيها أيضًا أن تخلق نتائج غير متوقعة. تتمثل إحدى طرق التغلب على هذه المشكلة في استخدام remove_action()الوظيفة داخل وظيفة رد الاتصال قبل الاتصال wp_insert_post().
function some_callback_function( $post_id, $post ) {
// do something here
// remove the callback function from the ‘save_post’ action
remove_action( 'save_post', 'some_callback_function', 10, 2 );
// now run the wp_insert_post() function
wp_insert_post( [some_array] );
// add the callback function back to the ‘save_post’ action
add_action( 'save_post', 'some_callback_function', 10, 2 );
// maybe do something more
}
add_action( 'save_post', 'some_callback_function', 10, 2 );
هذا استخدام عملي آخر remove_action()أو remove_filter()وظائف. سيساعدك التعمق في وورد بريس Core على فهم كيف يمكنك تجنب هذه المواقف بشكل أفضل.
دروس ووردبريس هوكس مكافأة
إضافة رمز يدويًا إلى رأس وتذييل وورد بريس
دليلك الكامل إلى مكتبة وسائط وورد بريس
كيفية إنشاء وتعديل وظيفة وورد بريس Cron
كيفية إنشاء قالب طفل وورد بريس
تعطيل إضافات وورد بريس من التحميل على صفحات ومنشورات معينة
قم بتعطيل Emojis في وورد بريس باستخدام Code
تعد وورد بريس Hooks واحدة من أهم الأدوات الموجودة في ترسانة مطوري وورد بريس. 💪 تعرف على الفرق بين الإجراءات والفلاتر (وكيفية استخدامها) في هذا الدليل!
انقر للتغريد
ملخص
هناك مزايا متعددة لاستخدام خطافات وورد بريس إذا كنت مطور وورد بريس .
لا تسمح لك الخطافات بتعديل الوظائف الأساسية لـ وورد بريس أو توسيعها فحسب ، بل يمكنك أيضًا استخدامها لتعديل المكونات الإضافية والسمات والسماح للمطورين الآخرين بالتفاعل مع المكونات الإضافية أو السمات الخاصة بك.
حان الوقت للتعلق بخطافات ووردبريس!
وفر الوقت والتكاليف وحقق أقصى قدر من أداء الموقع من خلال:
مساعدة فورية من خبراء استضافة وورد بريس ، 24/7.
تكامل Cloudflare Enterprise.
يصل الجمهور العالمي إلى 28 مركز بيانات حول العالم.
التحسين من خلال مراقبة أداء التطبيقات المضمنة لدينا.

