البرمجة

دليل برمجة إضافات ووردبريس

مدخل إلى برمجة إضافات ووردبريس (WordPress Plugins)

مقدمة

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

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


المفاهيم الأساسية حول الإضافات

ما هي الإضافة في ووردبريس؟

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

لماذا نستخدم الإضافات؟

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


إعداد بيئة العمل

المتطلبات الأساسية

  • خادم محلي مثل XAMPP أو MAMP.

  • نظام ووردبريس مثبت محليًا.

  • محرر نصوص مثل Visual Studio Code.

  • معرفة أساسية بلغة PHP وHTML وCSS وJavaScript.

إنشاء مجلد الإضافة

يجب إنشاء مجلد خاص للإضافة داخل المسار التالي:

bash
/wp-content/plugins/اسم-الإضافة

داخل هذا المجلد، يجب إنشاء ملف PHP رئيسي يحمل اسم الإضافة أو اسمًا يدل عليها، مثل:

perl
my-first-plugin.php

الهيكل الأساسي لملف الإضافة

فيما يلي مثال على الهيكل الأساسي لملف الإضافة:

php
/* Plugin Name: My First Plugin Plugin URI: https://example.com/ Description: هذه أول إضافة لي على ووردبريس. Version: 1.0 Author: اسمك Author URI: https://example.com/ License: GPL2 */

هذا الترويس ضروري لتعرف ووردبريس على الإضافة وعرضها في لوحة التحكم.


تشغيل الإضافة

بعد حفظ ملف الإضافة داخل مجلد الإضافات، يمكن تفعيلها من خلال لوحة التحكم:

  1. الذهاب إلى لوحة التحكم > إضافات.

  2. تفعيل الإضافة من القائمة.


ربط الكود بنظام ووردبريس عبر “Hooks”

ما هي الـ Hooks؟

توفر ووردبريس آلية تدعى “Hooks”، وهي نقطة ربط تتيح لك تنفيذ كود معين عند حدوث حدث معين في النظام. تنقسم إلى نوعين:

  • Action Hooks: لتنفيذ كود معين.

  • Filter Hooks: لتعديل بيانات قبل عرضها أو معالجتها.

مثال على Action Hook

php
function say_hello() { echo "

مرحبا بك في موقعي!

"
; } add_action('wp_footer', 'say_hello');

هذا المثال يضيف رسالة إلى تذييل الموقع باستخدام الـ wp_footer.


إضافة صفحة إعدادات إلى لوحة التحكم

لإضافة صفحة إعدادات خاصة بالإضافة داخل لوحة التحكم:

php
function my_plugin_menu() { add_menu_page( 'إعدادات الإضافة', 'الإضافة الخاصة بي', 'manage_options', 'my-plugin-settings', 'my_plugin_settings_page', 'dashicons-admin-generic', 100 ); } add_action('admin_menu', 'my_plugin_menu'); function my_plugin_settings_page() { echo '

إعدادات الإضافة

هنا يمكن وضع الإعدادات.

'
; }

تنظيم ملفات الإضافة

يفضل تنظيم الإضافة في مجلدات وملفات منفصلة للحصول على كود نظيف وقابل للصيانة:

bash
/my-plugin/ │ ├── my-plugin.php ├── /includes/ │ └── functions.php ├── /admin/ │ └── settings-page.php ├── /assets/ │ ├── style.css │ └── script.js

التعامل مع قواعد البيانات

إنشاء جدول جديد

php
function my_plugin_create_table() { global $wpdb; $table_name = $wpdb->prefix . 'my_plugin_table'; $charset_collate = $wpdb->get_charset_collate(); $sql = "CREATE TABLE $table_name ( id mediumint(9) NOT NULL AUTO_INCREMENT, name tinytext NOT NULL, created datetime DEFAULT CURRENT_TIMESTAMP NOT NULL, PRIMARY KEY (id) ) $charset_collate;"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); } register_activation_hook(__FILE__, 'my_plugin_create_table');

استخدام الجافاسكريبت وCSS في الإضافة

لربط ملفات الجافاسكريبت وCSS:

php
function my_plugin_enqueue_scripts() { wp_enqueue_style('my-plugin-style', plugin_dir_url(__FILE__) . 'assets/style.css'); wp_enqueue_script('my-plugin-script', plugin_dir_url(__FILE__) . 'assets/script.js', array('jquery'), false, true); } add_action('wp_enqueue_scripts', 'my_plugin_enqueue_scripts');

الحماية والأمان

عند تطوير الإضافات، من الضروري مراعاة الجوانب الأمنية:

  • تحقق دائمًا من صلاحيات المستخدم باستخدام current_user_can().

  • نظف مدخلات المستخدم باستخدام sanitize_*.

  • استخدم nonce لحماية النماذج.


الترجمة وتعدد اللغات

يمكن جعل الإضافة قابلة للترجمة باستخدام دوال __() و _e():

php
_e('مرحبًا بك في الإضافة', 'my-plugin');

يجب تضمين ملف POT للترجمة باستخدام أدوات مثل Poedit.


توزيع الإضافة

يمكن رفع الإضافة إلى مستودع ووردبريس الرسمي عبر:

  1. إنشاء حساب على WordPress.org.

  2. تقديم الطلب لرفع الإضافة.

  3. استخدام SVN لنشرها على المستودع.


مثال تطبيقي: إضافة عداد زيارات للمنشورات

الكود الأساسي

php
function increase_post_views($postID) { $count_key = 'post_views_count'; $count = get_post_meta($postID, $count_key, true); if($count == '') { $count = 0; delete_post_meta($postID, $count_key); add_post_meta($postID, $count_key, '1'); } else { $count++; update_post_meta($postID, $count_key, $count); } } function track_post_views($post_id) { if(!is_single()) return; if(empty($post_id)) { global $post; $post_id = $post->ID; } increase_post_views($post_id); } add_action('wp_head', 'track_post_views');

عرض العداد

php
function get_post_views($postID){ $count_key = 'post_views_count'; $count = get_post_meta($postID, $count_key, true); return $count; }

جدول مقارنة بين Actions وFilters في ووردبريس

العنصر Action Hooks Filter Hooks
الوظيفة تنفيذ وظيفة إضافية تعديل البيانات أثناء التحميل
قيمة الإرجاع لا ترجع قيمة يجب أن ترجع قيمة معدلة
التوقيت عند حدوث حدث أثناء معالجة البيانات
مثال add_action('wp_footer', ...) add_filter('the_content', ...)

أفضل الممارسات في تطوير الإضافات

  • اكتب كودًا نظيفًا ومنظمًا مع استخدام المسافات الفاصلة وتعليقات توضيحية.

  • استخدم برمجيات التحكم بالإصدار مثل Git.

  • التزم بقواعد التسمية الموحدة للأسماء.

  • اختبر الإضافة جيدًا قبل النشر باستخدام بيئة اختبارية.

  • تجنب التداخل مع إضافات أو قوالب أخرى عبر استخدام نطاق فريد (prefix) للأسماء.


الخاتمة

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


المراجع: