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

بيئة التطوير

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

في حال كنت ستهيئ بيئة محلية فقم بتنزيل وتنصيب نسختك من ووردبرس، ولا تنس طبعًا أن يكون لديك إحدى برامج إعداد الخادوم المحلي مثل لامب (LAMP) أو وامب (WAMP).

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

بعدها قم بتفعيل التفلية (debugging)، والتي ستجعل ووردبرس يسجل (أو يعرض إن شئت) رسائل الأخطاء والتحذيرات كي تعمل على تصحيحها. من أجل ذلك، أضف الرِماز (الكود) التالي إلى ملف wp-config.php. في حال كانت هذه السطور موجودة بالفعل، عندها يكفيك أن تغيّر القيم true بـ false لتصل إلى نفس النتيجة أسفله:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_DISPLAY', false );
define( 'WP_DEBUG_LOG', true );

ملفات الإضافة

سنعمل على تطوير إضافة تعرض رسالة “مرحبا يا عالم” مع قائمة خاصة بها على لوحة التحكم، وهذا أمر سيمكننا من تعلّم الكثير من خصائص تطوير الإضافات على ووردبرس بدءً من الملفات مرورًا بالتنصيب ووصولًا إلى التحكم في العرض على لوحة تحكم ووردبرس، فهل أنت مستعد؟

كلّ إضافة يكون لديها مجلّد خاص ضمن المجلد wp-content/plugins/، ومجلّد الإضافة هذا يضم ملف بأشبي (PHP) الرئيسي للإضافة، يحمل هذا الملف عادة (لا ضرورة) نفس اسم مجلد الإضافة. سوف نسمّي إضافتنا hello-wp، ولتفادي احتمال تعارض اسمنا مع اسم إضافة أخرى في نفس المجلد plugins، سوف نضيف سابقة تعكس اسمنا ليصبح كالتالي ossostech-hello-wp.

ننشئ إذن المجلد ossostech-hello-wp ونضع فيه ملف بأشبي باسم ossostech-hello-wp.php ونضع الكلّ في المجلد /wp-content/plugins ونكون بذلك قد أنشأنا مجلد العمل على إضافتنا ضمن ووردبرس.

أوّل ما نبدأ به هو تأمين الإضافة من الوصول المباشر، أي من كتابة رابطها مباشرة والوصول إليها خارج إطار ووردبرس، لذلك قم بوضع السطر التالي على رأس جميع ملفات بأشبي التابعة للإضافة، لدينا واحد فقط في مثالنا هذا وهو ملف بأشبي الرئيسي للإضافة ossostech-hello-wp.php. يقوم السطر أسفله بالتأكد من أنّ الثابت ABSPATH معرّف فعلًا، وهو يمثل المسار المطلق (الكامل) حيث تم تنصيب ووردبرس. فإن لم يكن فإننا نوقف التنفيذ مستنتجين بذلك أنّ الإضافة لم يتم الوصول إليها من داخل نطاق ووردبرس.

defined( 'ABSPATH' ) or die( 'Access Denied!' );

يمكنك تغيير رسالة Access Denied بأي شيء تجود عليك به قريحتك شرط أن تكون مؤدبًا مثل: تمّ تصنيفك كمحتال مخادع وبالتالي منعناك من الدخول. أكان ذلك مؤدبًا؟

ترويسة تعريف الإضافة

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

<?php
/**
 * Plugin Name: Hello-wp
 * Description: Show Hello World on Admin Panel.
 * Author: Ossostech
 */

 defined( 'ABSPATH' ) or die( 'Access Denied!' );

قد تضم الترويسة معلومات أخرى يمكنك أن تقرأ عنها هنا. ويستعملها نظام ووردبرس للتعرف على إضافتك ومن دونها فإنّ هذا الأخير لن يقوم بتحميل الإضافة.

تطوير الإضافة

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

تدعم منصة ووردبرس نوعين من الهوكات: الأكشنات (actions) والفلاتر (filters). تسمح لك الأكشنات بإضافة أو تعديل وظيفيات ووردبرس، فيما تسمح لك الفلاتر بتعديل المحتوى بينما يتم تحميله وعرضه على المتصفح.

ملاحظة: كان يمكنني تسمية actions بالإجراءات، و filters بالمرشحات، فأنا من محبّي المصطلحات الأصيلة. لكن اعتماد مصطلحات كهذه سيجعلنا نبتعد عن المصطلح الشائع استخدامه بين المبرمجين. وبما أنّ هذا الأخير قابل للتعريب على نحوٍ يقبل الصرف مثل: أكشنَ يُؤكش أكشنة، وفلتَرَ يُفلترُ فلترة.. فإذا كان المصطلح يقبل التعريب والصرف فلا حرج في استعماله وربما إدخاله إلى القاموس.

إنشاء قائمة الإضافة

متسلّحين بالمعرفة السابقة، سنقوم بإنشاء قائمة للإضافة، وبعدها نجعل النقر عليها يعرض رسالة “مرحبا يا عالم” على واجهة الإضافة. من أجل ذلك فنحن نستخدم الوظيفة add_menu_page التي نستدعيها ضمن الهوكة الأكشن (action hook) المسماة admin_menu:

 add_action('admin_menu', 'hello_wp_main_menu');
 function hello_wp_main_menu() {
   add_menu_page(
     'hello-wp', //page_title
     'Hello-wp', //menu_title
     'manage_options', //wordpress.org/support/article/roles-and-capabilities/#capabilities
     'hellowp' //menu_slug
     //function,
     //icon_url,
     //position
   );
 }

السطر الأوّل قام بتسجيل الوظيفة hello_wp_main_menu() كاستدعاء على الهوكة admin_menu، ثم بعده مباشرة قمنا بإنجاز هذه الوظيفة والتي هي عبارة عن استدعاء للوظيفة add_menu_page، وقد قمتُ بإدراج تعليقات بالغرض من كلّ معطى من معطيات الوظيفة وأظن أنها واضحة.

الآن إذهب إلى ووردبرس وابحث في قائمة الإضافات سوف تجد إضافتك الجديدة معروضة لكن غير مفعّلة، فعّلها وسوف ترى قائمتك قد ظهرت باسم Hello-wp تهانينا.

إنشاء صفحة الإضافة

الآن بعد إنشاء القائمة، فإن النقر عليها سيعطي صفحة غير موجودة، دعنا نطوّر صفحة الإضافة والتي ستكون بسيطة جدًا بحيث تعرض رسالة “مرحبا يا عالم”. قم بإنشاء ملف جديد في مجلد الإضافة وسمّه hello-page.php وضع فيه المحتوى التالي:

<div class="wrap">
  <h1>مرحبا يا عالم</h1>
</div>

يُنصح دائمًا في ووردبرس بوضع المحتوى ضمن قسم div مع الصنف wrap.

نضيف الآن وظيفة تقوم بتحميل هذا المحتوى عند تسجيل القائمة كي يتمّ عرضه عند النقر عليها. نضع هذه الوظيفة طبعًا في ملف الإضافة الرئيسي، أي الملف ossostech-hello-wp.php:

function hello_world_page_content() {
   require 'hello-page.php';
 }

الآن نقوم بتعديل الوظيفة hello_wp_main_menu() أعلاه التي تستدعي add_menu_page() وذلك بتعديل المعطى function وإعطائه اسم الوظيفة hello_world_page_content:

 function hello_wp_main_menu() {
   add_menu_page(
     'hello-wp', //page_title
     'Hello-wp', //menu_title
     'manage_options', //wordpress.org/support/article/roles-and-capabilities/#capabilities
     'hellowp', //menu_slug
     'hello_world_page_content'
     //icon_url,
     //position
   );
 }

احفظ كلّ شيء وانتقل إلى ووردبرس وانقر الآن على قائمتك Hello-wp سوف تظهر لك رسالة “مرحبا يا عالم”.

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

أنصح بقراءة المقالة التالية:

تطوير إضافة ووردبرس تعدّل لوحة التحكم وواجهة المدونة