سواء كنت ترغب في إضافة ميزات محددة إلى موقعك الإلكتروني أو تحويل أفكارك إلى منتجات قابلة للمشاركة، فإن تعلم تطوير إضافات (plugins) لنظام ووردبريس (WordPress) يعتبر مهارة ذات قيمة كبيرة. من خلال تطوير الإضافات بنفسك، يمكنك الحصول على سيطرة كاملة على وظائف موقعك، وتجاوز القيود المفروضة على القوالب (templates) المتاحة، وفي النهاية المساهمة في النظام البيئي الواسع لووردبريس. سيقوم هذا الدليل بمرافقتك خطوة بخطوة في رحلة كاملة تبدأ من إنشاء بيئة التطوير وحتى نشر إضافات متقدمة، مما يمنحك كل المعرفة اللازمة لإنشاء إضافات قوية وآمنة وسهلة الصيانة.
إعداد بيئة التطوير وتهيئة المشروع
قبل كتابة أول سطر من الكود، من الخطوات الأساسية والمهمة جدًا إنشاء بيئة تطوير فعالة. بيئة مُعدة بشكل صحيح يمكن أن تحسن بشكل كبير من كفاءة عملية التطوير وتجربة التصحيح (الديباجينج).
إعداد بيئة التطوير المحلية.
نوصي باستخدام حزم برمجيات بيئة الخادم المحلية، مثل Local by Flywheel أو XAMPP أو Laragon. تسمح هذه الأدوات بتثبيت PHP وMySQL وخادم الويب (عادةً ما يكون Apache أو Nginx) بنقرة واحدة. تأكد من أن إصدار PHP الذي تستخدمه يتوافق مع الإصدارات الموصى بها رسميًا؛ ففريق تطوير WordPress ينصح عادةً باستخدام إصدارات PHP مستقرة.
القراءة الموصى بها الدليل النهائي لتطوير الإضافات في ووردبريس: بناء وظائف مخصصة من الصفر إلى واحد.。
بعد ذلك، ستحتاج إلى محرر كود. Visual Studio Code و PhpStorm هما من الخيارات الشائعة بين المطورين. Visual Studio Code خفيف الوزن ويدعم إضافات (extensions) بشكل كبير؛ يمكنك الحصول على تجربة شبيهة بتجربة محررات التطوير المتكاملة (IDEs) عن طريق تثبيت إضافات مثل PHP Intelephense ومقتطفات الكود الخاصة بـ WordPress. أما PhpStorm فهو يوفر أدوات أقوى لتحليل الكود والتصحيح وإعادة هيكلته.
إنشاء الهيكل الأساسي لأول إضافة (plugin)
ملحق ووردبريس (WordPress plugin)، في جوهره، هو عبارة عن كود برمجي يتم تضمينه في موقع ووردبريس لإضافة وظائف أو تحسينات جديدة إلى الموقع. يتم تثبيت هذا الملحق عادةً من خلال لوحة التحكم الخاصة بووردبر wp-content/plugins/ المجلدات الموجودة في الدليل تحتوي على ملف PHP رئيسي واحد على الأقل. دعونا نبدأ بإنشاء أبسط إضافة (plugin) ممكنة.
أولاً، في دليل الإضافات (plugins) الخاص بتثبيت WordPress الخاص بك، قم بإنشاء مجلد جديد، على سبيل المثال: my-first-pluginداخل هذا المجلد، قم بإنشاء ملف PHP رئيسي، وعادةً ما يكون اسم الملف مطابقًا لاسم المجلد نفسه:my-first-plugin.php。
يجب أن يبدأ كل إضافة (plugin) بمعلومات رأس الإضافة (Plugin Header) القياسية، وهي الطريقة التي يستخدمها ووردبريس (WordPress) للتعرف على المعلومات الأساسية للإضافة. افتحها. my-first-plugin.php وأضف الكود التالي:
<?php
/**
* Plugin Name: 我的第一个插件
* Plugin URI: https://yourwebsite.com/my-first-plugin
* Description: 这是一个用于学习的简单示例插件。
* Version: 1.0.0
* Author: 你的名字
* License: GPL v2 or later
* Text Domain: my-first-plugin
* Domain Path: /languages
*/ بعد حفظ الملف، قم بتسجيل الدخول إلى واجهة خلفية WordPress الخاصة بك، ثم اذهب إلى قائمة “الإضافات” (Plugins). يجب أن ترى إضافة “My First Plugin” موجودة ضمن قائمة الإضافات. على الرغم من أن هذه الإضافة لا تحتوي على أي وظائف حاليًا، إلا أنك قد نجحت بالفعل في إنشاء إضافة WordPress صالحة.
القراءة الموصى بها الدليل النهائي لتطوير الإضافات في ووردبريس: بناء إضافات على مستوى تجاري من الصفر إلى واحد.。
الهيكل الأساسي للإضافة وآلية الاستجابة للأحداث (Hook Mechanism)
فهم نظام “الخطافات” (Hooks) في ووردبريس (WordPress) هو أساس تطوير الإضافات (Plugins). تسمح الخطافات بأن يتم إدراج كودك في نقاط زمنية محددة ضمن العمليات الأساسية لووردبريس، مما يتيح تعديل أو إضافة ميزات جديدة.
Action Hooks و Filter Hooks
يوفر ووردبريس نوعين رئيسيين من “الخطافات” (Hooks): الإجراءات (Actions) والمرشحات (Filters).
تسمح خطافات الأفعال (Action Hooks) بتنفيذ كود عند حدوث أحداث معينة، مثل نشر مقال، تسجيل دخول المستخدم، أو تحميل واجهة الإدارة الخلفية. لا تتوقع هذه الخطافات أي قيمة مرتدة (return value)، بل تُستخدم فقط add_action() هذه الدالة تُستخدم لتثبيت دالتك في خطاف الإجراء (action hook).
تُستخدم “خطافات المرشحات” (filter hooks) لتعديل البيانات. فهي تسمح لك بتغيير البيانات قبل استخدامها، سواء كان ذلك عن طريق حفظها في قاعدة البيانات أو عرضها على الصفحة. يجب أن تعيد دالة المرشح القيمة المعدلة ك add_filter() هذه الدالة تُستخدم لتثبيت دالتك في خطاف (hook) معين لمرشح (filter).
تنفيذ وظيفة بسيطة
دعونا نضيف أول وظيفة عملية للإضافة: إضافة نص مخصص تلقائيًا في نهاية محتوى المقال. سنستخدم… the_content هذا خطاف المرشح (filter hook).
في ما يخصك… my-first-plugin.php بعد كتلة تعليقات رأس الملف، أضف الكود التالي:
القراءة الموصى بها تعلم تطوير إضافات ووردبريس من الصفر: إنشاء أول ميزة مخصصة الخاصة بك。
// 在文章内容末尾添加自定义文本
function myfp_add_text_to_content( $content ) {
if ( is_single() && in_the_loop() && is_main_query() ) {
$custom_text = ‘<p><em>شكرًا لقراءتكم! تم تقديم الدعم لهذا المقال بواسطة 【My First Plugin】.</em></p>';
$content .= $custom_text;
}
return $content;
}
add_filter( 'the_content', 'myfp_add_text_to_content' ); هذا القطعة من الكود تحدد دالة (function). myfp_add_text_to_contentإنه يستقبل محتوى المقالات. $content كمعامل، تضمن عمليات المقارنة داخل الدالة أن هذا النص يتم عرضه فقط ضمن الحلقة الرئيسية لصفحة المقال الفردي في واجهة المستخدم. بعد ذلك، نقوم بإضافة النص المخصص إلى المحتوى الأصلي ونعيد إرسال المحتوى المعدل. تم استخدام السطر الأخير لتنفيذ هذه الع add_filter قم بتثبيت هذه الدالة (mount this function) على… the_content على الفلتر.
قم بحفظ الملف ثم قم بتحديث صفحة مقالة المدونة، وسوف تتمكن من رؤية النص الذي أضفته في أسفل المقالة.
إنشاء قائمة إدارة وصفحة إعدادات
عادةً ما يحتاج الإضافة المتكاملة إلى توفير خيارات تكوين للمستخدمين. وهذا يتطلب إنشاء قوائم وصفحات إعدادات في واجهة إدارة ووردبريس (WordPress Admin).
أضف الصفحة إلى قائمة الإدارة.
يوفر ووردبريس دوالًا لإضافة القوائم الرئيسية أو الفرعية إلى الشريط الجانبي الخاص بالإدارة. سنقوم بإنشاء صفحة إعدادات بسيطة. أولاً، سنستخدم… add_action() الخطاف موجود في… admin_menu يتم تثبيت دالة على هذا الإجراء، وتُستخدم لتسجيل القائمة (المينو).
أضف الكود التالي إلى الملف الرئيسي للإضافة:
// 创建管理菜单
function myfp_create_admin_menu() {
add_menu_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 所需权限
'myfp-settings', // 菜单 Slug
'myfp_settings_page_html', // 显示页面内容的回调函数
'dashicons-admin-generic', // 菜单图标(Dashicon)
80 // 菜单位置
);
}
add_action( 'admin_menu', 'myfp_create_admin_menu' ); إنشاء محتوى لصفحة الإعدادات
الآن، نحتاج إلى تعريف الدالة الاستدعائية (callback function) المذكورة أعلاه. myfp_settings_page_html لعرض محتوى HTML الخاص بصفحة إعدادات التصميم.
// 设置页面的 HTML 结构
function myfp_settings_page_html() {
// 检查用户权限
if ( ! current_user_can( 'manage_options' ) ) {
return;
}
?>
<div class="wrap">
<h1></h1>
<form action="/ar/options.php/" method="post" data-trp-original-action="options.php">
<?php
// 输出安全字段(如 nonce)、设置节和字段
settings_fields( 'myfp_options' );
do_settings_sections( 'myfp-settings' );
submit_button( '保存设置' );
?>
<input type="hidden" name="trp-form-language" value="ar"/></form>
</div>
أنا لا أعرف ماذا أقول. لتخزين والتحقق من الإعدادات، نحتاج إلى استخدام واجهة برمجة التطبيقات (API) الخاصة بإعدادات ووردبريس (WordPress Settings API). هذا يتضمن تسجيل الإعدادات، وإضافة أقسام (sections) وحقول (fields) للإعدادات. دعونا نقوم بتهيئة هذه الإعدادات في دالة أخرى، ثم نقوم بتثبيتها (mounting) في النظام. admin_init من الناحية العملية/التنفيذية.
// 初始化设置
function myfp_settings_init() {
// 注册一个设置项
register_setting( 'myfp_options', 'myfp_options', 'myfp_options_validate' );
// 添加一个设置区域
add_settings_section(
'myfp_section_general',
'常规设置',
'myfp_section_general_html',
'myfp-settings'
);
// 向该区域添加一个字段
add_settings_field(
'myfp_field_custom_text',
'自定义显示文本',
'myfp_field_custom_text_html',
'myfp-settings',
'myfp_section_general',
[ 'label_for' => 'myfp_field_custom_text' ]
);
}
add_action( 'admin_init', 'myfp_settings_init' );
// 设置区域的描述文本
function myfp_section_general_html() {
echo '<p>تهيئة السلوك الأساسي للإضافة (Plugin).</p>';
}
// 文本字段的 HTML 输出
function myfp_field_custom_text_html() {
$options = get_option( 'myfp_options' );
$value = $options['custom_text'] ?? ''; // 使用空值合并运算符
?>
<input type="text" id="myfp_field_custom_text" name="myfp_options[custom_text]" value="<?php echo esc_attr( $value ); ?>" class="regular-text">
<p class="description">النص المدخل هنا سيتم عرضه في نهاية المقال.</p>
<?php
}
// 简单的设置验证
function myfp_options_validate( $input ) {
$new_input = [];
if ( isset( $input['custom_text'] ) ) {
$new_input['custom_text'] = sanitize_text_field( $input['custom_text'] );
}
return $new_input;
} وأخيرًا، لا تنسَ تعديل ما قمنا بإنشائه مسبقًا. myfp_add_text_to_content الدالة… دعها تستخدم هذا الإعداد الجديد.
function myfp_add_text_to_content( $content ) {
if ( is_single() && in_the_loop() && is_main_query() ) {
$options = get_option( 'myfp_options' );
$custom_text = $options['custom_text'] ?? '感谢阅读!';
// 确保有内容才添加
if ( ! empty( $custom_text ) ) {
$content .= '<p><em>'`. esc_html($custom_text)`.'</em></p>';
}
}
return $content;
} الآن، يمكنك تعديل النص الذي يظهر في نهاية المقالات بحرية من خلال صفحة إعدادات الإضافة.
التطوير المتقدم وأفضل الممارسات
عندما تصبح وظائف الإضافات أكثر تعقيدًا، فإن اتباع ممارسات التطوير الجيدة يمكن أن يضمن سهولة صيانة الكود وأمانه وأدائه.
البرمجة الكائنية والأمان
بالنسبة للإضافات المعقدة، فإن استخدام هيكل الكلاسات القائم على التوجه الكائني (Object-Oriented Programming – OOP) يعتبر الخيار الأفضل. هذا يساعد على تنظيم الكود، ويتجنب تعارض أسماء الدوال، ويزيد من قابلية إعادة است
مثال بسيط على هيكل الكلاس كالتالي:
class MyFirstPlugin {
public function __construct() {
add_action( 'init', [ $this, 'load_textdomain' ] );
add_action( 'admin_menu', [ $this, 'create_admin_menu' ] );
add_filter( 'the_content', [ $this, 'add_text_to_content' ] );
}
public function load_textdomain() {
load_plugin_textdomain( 'my-first-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );
}
// ... 其他方法(如前面定义的函数可以移到这里成为类的方法)...
}
// 安全地初始化插件类
if ( class_exists( 'MyFirstPlugin' ) ) {
$myFirstPlugin = new MyFirstPlugin();
} الأمان يعتبر من أهم الأولويات في تطوير ووردبريس (WordPress). يجب دائمًا التحقق من صحة المدخلات الواردة من المستخدمين (Validation) وتنقيتها (Sanitization)، بالإضافة إلى تهريب البيانات المستخدمة في العرض (Escaping). استخدم أدوات مثل… sanitize_text_field(), esc_html(), wp_kses_post() و wp_nonce_field() مثل هذه الدوال المدمجة في ووردبريس (WordPress).
التدويل وتحسين الأداء
لكي يتمكن مستخدمو العالم أجمع من استخدام إضافتك، فإن التدويل (i18n) أمر ضروري للغاية. وهذا يعني استخدام… __() و _e() استخدم دوال مثل `wrap()` لتغليف جميع السلاسل النصية المرئية للمستخدمين. لقد قمنا بالفعل بتثبيت هذه الدوال داخل طريقة إنشاء الكلاس (class constructor). load_textdomain الدالة، ستقوم بذلك… init يتم تحميل ملفات الترجمة أثناء تنفيذ العملية. ستحتاج إلى استخدام أداة مثل Poedit لإنشاء هذه الملفات. .pot ملف القالب، وطلب من المترجمين إنشاء الترجمة الخاصة به. .mo أترجم المستندات.
من ناحية الأداء، تأكد من تحميل موارد الإضافات (مثل ملفات CSS وJS) فقط عند الحاجة إليها. wp_enqueue_script() و wp_enqueue_style() الدالة، مع استخدام الوصلات (hooks) الصحيحة (مثل…) wp_enqueue_scripts مخصص للواجهة الأمامية (Front End).admin_enqueue_scripts للاستخدام في الخلفية (backend)، يُنصح باستخدام واجهة برمجة التطبيقات (API) الخاصة بالتخزين المؤقت (cache) في ووردبريس قدر الإمكان عند إجراء عمليات الاستعلام عن البيانات من قاعدة البيانات. wp_cache_get() و wp_cache_set()) لتخزين نتائج العمليات التي تستغرق وقتًا طويلاً في الذاكرة المؤقتة.
الملخصات
بدأت رحلة تطوير إضافات ووردبريس (WordPress plugins) من ملف PHP بسيط، ومن خلال إتقان آليات المكونات المتصلة بالنظام (Actions وFilters)، أصبح بإمكانك تغيير وتوسيع وظائف ووردبريس الأساسية. بدءًا من إنشاء واجهات إدارة واستخدام واجهة برمجة التطبيقات (Settings API) لمعالجة إعدادات المستخدمين، وصولاً إلى تطبيق أساليب البرمجة الكائنية وممارسات الأمان الصارمة، كل خطوة تساهم في تحسين مستوى احترافية وموثوقية الإضافات. تذكر أن الإضافات الممتازة لا تحتاج فقط إلى وظائف قوية، بل تحتاج أيضًا إلى اتباع أفضل الممارسات مثل التدويل (internationalization) وتحسين الأداء (performance optimization) وتنظيم الكود (code organization)، لضمان أمانها وكفاءتها وسهولة صيانتها. مع مواصلة التدريب والممارسة، ستتمكن من إنشاء إضافات عالية الجودة تلبي احتياجات معقدة وتفيد مجتمع ووردبريس حول العالم.
الأسئلة الشائعة الأسئلة المتداولة
ما هي المعرفة الأساسية المطلوبة لتطوير إضافات (plugins) لبرنامج ووردبريس (WordPress)؟
يجب أن تتقن القواعد الأساسية للغة PHP، وأن تفهم دور HTML و CSS و JavaScript في التفاعلات على الجانب الأمامي (الواجهة البرمجية للمستخدم). كما سيكون من المفيد أن تكون على دراية بالمفاهيم الأساسية لبرنامج WordPress، مثل المقالات (Articles)، الصفحات (Pages)، أدوار المستخدمين (User Roles)، وهيكل قاعدة البيانات (Database Structure)، حيث سيساعدك ذلك في فهم كيفية تفاعل الإضافات (Plugins) مع النظام. إن امتلاك معرفة أساسية بطلبات واستجابات HTTP سيساعدك أيضًا في التعامل مع النماذج (Forms) واستدعاءات الواجهات البرم
ما الفرق بين الإجراءات (Actions) والمرشحات (Filters) الموجودة في الخطافات (Hooks)؟
يُستخدم خطاف الإجراء (Action Hook) لتنفيذ الكود عند حدوث حدث معين، ولا يُرجع أي قيمة؛ الغرض منه هو “القيام بشيء ما”, مثل إرسال بريد إلكتروني أو تسجيل سجل. أما خطاف المرشح (Filter Hook) فهو يُستخدم لتعديل البيانات المُمررة إليه، ويجب على الدالة المستخدمة إرجاع القيمة المعدلة. يتم تعديل المحتوى، النصوص، أو المتغيرات الأخرى باستخدام خطاف المرشح، مثل تغيير عنوان المقالة أو محتوى الأداة الإض
كيف يمكنني منع البرامج الإضافية (الإضافات) التي أطورها من التعارض مع برامج إضافية أخرى؟
إضافة بادئة فريدة لجميع الدوال والفئات والمتغيرات والثوابت هي الطريقة الأكثر فعالية لمنع حدوث تعارضات في الأسماء. تجنب استخدام أسماء عامة، واستخدم اختصارات تمثل اسم الإضافة الخاصة بك أو اسم الشركة كبادئة. كما أن استخدام برمجة الكائنات وتغليف الكود داخل الفئات يساعد في عزل نطاقات التأثير بشكل فعال. بالإضافة إلى ذلك، عند تنفيذ الروابط (hooks)، تأكد من دقة شروط التحكم لتجنب تنفيذ الكود في الصفحات غير الضرورية.
كيف يمكنني تصحيح أخطاء (الديباج) في إضافة (Plugin) الخاصة بي لووردبريس (WordPress)؟
أولاً، تأكد من أنه في wp-config.php تم تفعيل الملف. WP_DEBUG و WP_DEBUG_LOGسيقوم هذا بتسجيل أخطاء PHP والإشعارات والتحذيرات في… wp-content/debug.log موجود في الملف. يمكن استخدامه. error_log() يتم استخدام قيم المتغيرات الناتجة عن الدوال لأغراض التصحيح والتحقيق (الديباجينج). لوحة التحكم (Console) ولوحة الشبكة (Network) المتوفرة في أدوات مطوري المتصفحات ضروريتان للغاية لتصحيح أخطاء الكود المكتوب بلغة JavaScript وطلبات AJAX. بالنسبة للمشكلات المعقدة، يمكن أن تساعد أدوات التصحيح المتخصصة مثل Xdebug في
بعد الانتهاء من التطوير، كيف يمكنني نشر إضافتي (البرنامج الإضافي) في الدليل الرسمي؟
ستحتاج إلى تسجيل الدخول إلى منصة المطورين الرسمية لـ WordPress وإنشاء حساب هناك. قم بقراءة دليل مطوري الإضافات (Plugin Developers Guide) بعناية للتأكد من أن إضافتك تلبي جميع المتطلبات، والتي تشمل معايير الكود، والأمان، وشروط الترخيص (يجب أن تكون متوافقة مع GPL). أعد معك وثائق شرح الإضافة، ولقطات الشاشة، وملف README. بعد ذلك، قم بتحميل كود الإضافة إلى المستودع الرسمي للكود الذي تم تخصيصه لك عبر أداة Subversion (SVN)، وبعد ذلك ستتمكن من رؤية إضافتك داخل المستودع.
ما التالي، ما التالي؟
القراءة الموسعة والمعرفة العملية
فيما يلي بعض الموضوعات ذات الصلة بموضوع هذه المقالة وهي مناسبة لمزيد من القراءة المتعمقة. وغالباً ما يكون من الأفضل إعطاء الأولوية للبدء بالمقال الأقرب إلى مشكلتك الحالية ثم التوسع تدريجياً إلى المواضيع المحيطة.
- كيفية اختيار وتخصيص تصميم ووردبريس المثالي الذي يناسب احتياجاتك؟
- دليل تطوير إضافات ووردبريس: كيف تبني إضافتك المخصصة الأولى من الصفر
- كيف تصبح مطورًا لإضافات ووردبريس: دليل شامل من الصفر إلى النهاية
- الدليل النهائي لبناء المواقع الإلكترونية: تحليل كامل لعملية التطوير على مستوى احترافي، من الصفر إلى واحد.
- من الصفر إلى الواحد: دليل شامل وخطوات عملية لبناء مواقع إلكترونية مهنية باستخدام WordPress