لماذا يجب تعلم تطوير إضافات (plugins) لمنصة ووردبريس (WordPress)؟
ووردبريس، كأكثر أنظمة إدارة المحتوى شيوعًا على مستوى العالم، يعتمد قدرته الكبيرة على التوسع إلى حد كبير على مجموعة واسعة من الإضافات (البرامج الإضافية). تعلم تطوير هذه الإضافات لا يمكن أن يمنحك القدرة على تخصيص الميزات وفقًا لاحتياجاتك الخاصة فحسب، بل يساعدك أيضًا على فهم البنية الأساسية لووردبريس بشكل أعمق، مما يعزز مستوى مهاراتك التقنية، وحتى يتيح لك تحويل أفكارك إلى منتجات قابلة للنشر. من خلال تطوير إضافاتك الخاصة، يمكنك السيطرة بدقة على جودة الكود وضمان أمان موقعك الإلكتروني، بالإضافة إلى تجنب مشاكل التوافق
إن الإضافة (Plugin) الأساسية لـ WordPress في الواقع عبارة عن ملف أو أكثر من ملفات بلغة PHP الموجودة في دليل (Directory) محدد داخل نظام WordPress، وتتفاعل هذه الملفات مع النظام الأساسي لـ WordPress من خلال واجهة برمجة التطبيقات (API) الغنية المتاحة فيه، مثل خطافات الأفعال (Action Hooks)، خطافات المرشحات (Filter Hooks)، الكود المختصر (Shortcodes)، الأدوات الإضافية (Plugins)، وغيرها. فهم هذا الآلية أمر ضروري لتطوير أي إضافة بنجاح.
تحضير بيئة التطوير والبنية التحتية
قبل كتابة أول سطر من الكود، من الضروري جدًا إنشاء بيئة تطوير جيدة. ستحتاج إلى بيئة خادم محلية (مثل XAMPP أو Local by Flywheel أو DevKinsta)، ومحرر كود (مثل VS Code أو PhpStorm)، بالإضافة إلى نسخة منظمة من ووردبريس (WordPress) لاستخدامها في الاختبارات.
القراءة الموصى بها دليل نهائي لتطوير إضافات ووردبريس: إتقان المبادئ الأساسية ومشاريع عملية。
مدخل الإضافة هو ملف PHP رئيسي، والتعليقات الموجودة في بداية هذا الملف هي المفتاح الذي يسمح لـ WordPress بتحديد طبيعة الإضافة. دعونا نبدأ أولاً بإنشاء الهيكل الأساسي للإضافة.
إنشاء الملف الرئيسي للإضافة (plugin)
عادةً ما يتم تسمية الملف الرئيسي للإضافة باسم الإضافة نفسها. على سبيل المثال، إذا قمنا بإنشاء إضافة باسم “أول إضافة لي”, فيمكن أن يكون اسم الملف الرئيسي لهذه الإضافة “my_first_extension.php”.my-first-plugin.phpيجب وضع هذا الملف في المكان المحدد./wp-content/plugins/my-first-plugin/تحت القائمة.
يجب أن يتضمن رأس الملف تعليقات معلومات الإضافة (plugins) القياسية. فيما يلي مثال أساسي:
<?php
/**
* Plugin Name: 我的第一个插件
* Plugin URI: https://example.com/my-first-plugin
* Description: 这是一个用于学习WordPress插件开发的功能插件示例。
* Version: 1.0.0
* Author: 你的名字
* Author URI: https://example.com
* License: GPL v2 or later
* Text Domain: my-first-plugin
* Domain Path: /languages
*/ بعد حفظ هذا الملف، قم بالدخول إلى صفحة “الإضافات” (Plugins) في واجهة ووردبريس الخلفية (WordPress Dashboard)، ويجب أن ترى الإضافة الجديدة موجودة في قائمة الإضافات ويمكنك تفعيلها. في الوقت الحالي، لا تحتوي الإضافة على أي وظائف، لكن الإطار الأساسي لها قد تم إنشاؤه بالفعل.
إنشاء هيكل المجلد الأساسي للإضافة (Plugin)
إن الإضافة (plugin) ذات الهيكل الواضح تسهل عملية الصيانة على المدى الطويل. يُنصح بإنشاء المجلدات التالية:
* /assets/يُستخدم لتخزين ملفات CSS وJavaScript والصور وغيرها من الموارد الثابتة.
* /includes/يُستخدم لتخزين ملفات الكلاسات الأساسية في PHP وملفات الدوال (functions).
* /languages/يُستخدم لتخزين ملفات الترجمة الدولية (بصيغة .po أو .mo).
القراءة الموصى بها جوهر مبادئ Tailwind CSS: كشف آلية عمل إطار عمل CSS الذري الذي يعطي الأولوية للعملية العملية。
الملف الرئيسيmy-first-plugin.phpيجب أن يكون مسؤولاً فقط عن عملية تهيئة المكونات الإضافية (plugins)، مثل تعريف الثوابت (constants)، واستيراد الملفات الأخرى (other files)، وتسجيل الوظائف المتابعة (hook functions)، وما إلى ذلك.
تنفيذ الميزات الأساسية: إنشاء قوائم وصفحات إدارية
إحدى الوظائف الشائعة للإضافات (plugins) هي إضافة صفحة قائمة إدارية في واجهة ووردبريس الخلفية (WordPress backend). سنقوم بتحقيق ذلك باستخدام “واجهة برمجة التطبيقات الخاصة بصفحات القوائم” (Menu Pages API) في ووردبريس.
إضافة قائمة رئيسية في الخلفية (الواجهة الخفية للتطبيق)
نحن بحاجة إلى استخدام…add_menu_page()الدالة. هذه الدالة عادةً ما تكون فيadmin_menuيتم استدعاء هذا الهوك (action hook) عند تنفيذ الإجراء المطلوب. دعونا نضيف الكود التالي إلى الملف الرئيسي:
// 定义在管理员菜单初始化时执行的功能
function mfp_add_admin_menu() {
add_menu_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 所需权限
'my-first-plugin', // 菜单slug
'mfp_display_settings_page', // 用于显示页面内容的回调函数
'dashicons-admin-generic', // 菜单图标(Dashicon)
6 // 菜单位置
);
}
// 将函数挂载到 `admin_menu` 钩子上
add_action('admin_menu', 'mfp_add_admin_menu'); إنشاء محتوى لصفحة الإعدادات لعرضه
في الكود أعلاه،mfp_display_settings_pageهذه دالة تنفيذية (callback function) مسؤولة عن إخراج محتوى صفحة الإعدادات بصيغة HTML. نحن بحاجة إلى تعريف هذه الدالة:
// 设置页面的显示内容
function mfp_display_settings_page() {
// 检查用户权限
if (!current_user_can('manage_options')) {
wp_die(__('你没有权限访问此页面。'));
}
?>
<div class="wrap">
<h1><?php echo esc_html(get_admin_page_title()); ?></h1>
<form action="/ar/options.php/" method="post" data-trp-original-action="options.php">
<?php
// 输出设置字段和安全nonce字段
settings_fields('mfp_options_group'); // 设置组的名称
do_settings_sections('my-first-plugin'); // 页面slug
submit_button('保存设置');
?>
<input type="hidden" name="trp-form-language" value="ar"/></form>
</div>
أنا لا أعرف ماذا أقول. هذا الكود يقوم بإنشاء إطار عمل لصفحة إعدادات ووردبريس القياسية، ويتم استخدام مكونات داخلية لتخصيص وظائف هذه الصفحة.settings_fields()وdo_settings_sections()الدالة تعني أننا سنستخدم واجهة برمجة التطبيقات (API) الخاصة بإعدادات ووردبريس (WordPress Settings API) لإدارة خياراتنا، وهذه هي الطريقة الأكثر أمانًا والأكثر اتساقًا.
استخدم واجهة برمجة التطبيقات (API) Settings لإدارة خيارات الإضافات.
التعامل المباشر$_POSTتوجد مخاطر أمنية متعلقة بالبيانات. تقوم واجهة برمجة التطبيقات (API) الخاصة بإعدادات ووردبريس (WordPress Settings API) بمعالجة عمليات التحقق من صحة البيانات وضمان أمانها وتخزينها، مما يجعلها الطريقة المفضلة لإدار
القراءة الموصى بها دليل نهائي لإضافات WooCommerce: بناء موقع تجاري إلكتروني مستقل للتجارة العابرة للحدود بشكل محترف من الصفر。
إعدادات التسجيل، الحقول، والفصول
نحن بحاجة إلى…admin_initنقوم بتهيئة الإعدادات الخاصة بنا داخل الخطاف (hook). أولاً، نستخدم…register_setting()قم بتسجيل خيار إعدادات.
function mfp_register_settings() {
// 注册一个设置:`mfp_options` 是存储在`wp_options`表中的键名
register_setting(
'mfp_options_group', // 设置组名,需与`settings_fields()`参数一致
'mfp_options', // 选项名
'mfp_sanitize_options' // 可选:数据清洗回调函数
);
// 添加一个设置章节
add_settings_section(
'mfp_main_section', // 章节ID
'主要设置', // 章节标题
'mfp_main_section_callback', // 章节介绍的回调函数
'my-first-plugin' // 所属页面slug
);
// 在章节中添加一个文本字段
add_settings_field(
'mfp_text_field', // 字段ID
'示例文本', // 字段标签
'mfp_text_field_callback', // 用于渲染字段HTML的回调函数
'my-first-plugin', // 所属页面slug
'mfp_main_section' // 所属章节ID
);
}
add_action('admin_init', 'mfp_register_settings'); تعريف دوال عرض (Rendering) وتنظيف (Cleaning) للحقول (Fields)
الآن، نحتاج إلى تعريف كل دالة استدعاء (callback function) المستخدمة أعلاه، وذلك لعرض البيانات بصيغة HTML وتنظيف البيانات.
// 主章节的描述文本
function mfp_main_section_callback() {
echo '<p>هذا هو المنطقة الرئيسية لإعدادات الإضافة.</p>';
}
// 文本字段的HTML输出
function mfp_text_field_callback() {
// 从数据库获取现有值
$options = get_option('mfp_options');
$value = $options['mfp_text_field'] ?? ''; // PHP 7.0+ 空合并运算符
echo '<input type="text" name="mfp_options[mfp_text_field]" value="' . esc_attr($value) . '" class="regular-text">';
}
// 数据清洗函数(可选但推荐)
function mfp_sanitize_options($input) {
$sanitized_input = [];
if (isset($input['mfp_text_field'])) {
// 对文本字段进行基本的清洗,如去除标签
$sanitized_input['mfp_text_field'] = sanitize_text_field($input['mfp_text_field']);
}
return $sanitized_input;
} وبذلك، تم إنشاء إضافة كاملة تحتوي على صفحة للإعدادات الأمنية. بعد تفعيل الإضافة، ستتمكن من رؤية قائمة “إضافاتي” في واجهة ووردبريس الخلفية؛ يمكنك النقر عليها لتعديل وحفظ خيار نصي معين. يتم تخزين جميع البيانات بشكل آمن من خلال واجهة برمجة التطبيقات (API) الخاصة بووردبريس.wp_optionsفي الجدول.
إضافة وظائف أمامية للإضافة: إنشاء أكواد قصيرة
الوظائف الخلفية (الخاصة بالخادم) أساسية، ولكن الإضافات (البرامج الإضافية) غالبًا ما تحتاج أيضًا إلى التأثير على الجزء الأمامي من الموقع (الواجهة المستخدمة من قبل الزوار). إنشاء رموز قصيرة (Shortcodes) هو طريقة ممتا
قم بتسجيل رمز قصير بسيط.
لقد قمنا بتسجيل اسم يُدعى…[my_greeting]هذا الكود المختصر يُستخدم لعرض رسالة تحية على الجانب الأمامي (الواجهة العميل) للموقع.add_shortcode()دالة.
أضف الكود إلى الملف الرئيسي أو إلى ملف الوظيفة المخصص.
// 注册短代码
function mfp_greeting_shortcode($atts, $content = null) {
// 使用shortcode_atts设置默认属性并合并用户输入
$atts = shortcode_atts(
array(
'name' => '访客', // 默认值
),
$atts,
'my_greeting' // 短代码名称
);
// 获取插件选项中存储的文本
$options = get_option('mfp_options');
$custom_text = $options['mfp_text_field'] ?? '';
// 构造输出
$output = '<div class="mfp-greeting">'$output = '<p>مرحبًا، '. esc_html($atts['name']) . '! مرحبًا بك في موقعنا.</p>';
if (!empty($custom_text)) {
$output .= '<p><strong>رسالة مخصصة:</strong>'`. esc_html($custom_text)`.'</p>'$output = '</div>';
// 返回输出内容,而不是直接echo
return $output;
}
add_shortcode('my_greeting', 'mfp_greeting_shortcode'); الآن، يمكن للمستخدمين إدخال النصوص في محرر المقالات.[my_greeting name="张三"]في هذه الحالة، سيقوم الجزء الأمامي (الفرينت إند) بعرض رسالة تحية مخصصة لكل مستخدم، وإذا تم تعيين “نص مثالي” في الجزء الخلفي (الباك إند)، فسيتم عرضه أيضًا. هذه الطريقة تربط بشكل فعال بي
الملخصات
من خلال الخطوات أعلاه، قمنا بإنشاء إضافة ووردبريس (WordPress plugin) تتمتع بوظائف كاملة. بدأنا من الصفر، حيث قمنا بإنشاء الملفات الأساسية للإضافة وهيكلها، واستخدمنا…add_menu_page()تم بناء صفحات إعدادات خلفية آمنة باستخدام واجهة برمجة التطبيقات (API) للإعدادات (Settings API)، وذلك عن طريق…add_shortcode()تم تنفيذ إخراج وظائف الواجهة الأمامية. هذه العملية تغطي العمليات الأساسية لتطوير الإضافات: التخطيط، التهيئة، دمج واجهات برمجة التطبيقات الخلفية (APIs)، معالجة البيانات، وتوفير واجهات للم
بعد إتقان هذه المعرفة الأساسية بشكل جيد، يمكنك المضي قدمًا لاستكشاف مواضيع أكثر تقدمًا، مثل إنشاء أنواع مقالات مخصصة، والبيانات الوصفية (Meta Boxes)، وجداول قواعد البيانات المخصصة، ونقاط نهاية واجهات برمجة التطبيقات الخادمة (REST API)، ومعالجة AJAX، بالإضافة إلى تدويل الإضافات (plugins). تذكر أن الالتزام بمعايير ترميز ووردبريس (WordPress) وأفضل الممارسات هو المفتاح لتطوير إضافات عالية الجودة وسهلة الصيانة.
الأسئلة الشائعة الأسئلة المتداولة
ما هي المعرفة بلغة PHP التي يجب إتقانها لتطوير الإضافات (plugins)؟
يجب أن تكون على دراية أساسية بلغة PHP، وتشمل هذه المعرفة المتغيرات (variables)، المصفوفات (arrays)، الدوال (functions)، التحكمات الشرطية (conditional statements)، والحلقات (loops). ستكون المعرفة في برمجة الكائنات (Object-Oriented Programming – OOP) مفيدة للغاية عند إنشاء إضافات (plugins) كبيرة ومعقدة. بالإضافة إلى ذلك، من الضروري فهم كيفية تشغيل ووردبريس (WordPress) للإضافات، وكيفية استخدام المتغيرات والدوال العامة (
كيفية تصحيح أخطاء البرامج الإضافية (الإضافات) التي قمت بتطويرها لنظام ووردبريس (WordPress)؟
أولاً، تأكد من أنه فيwp-config.phpتم تفعيل الملف.WP_DEBUGوWP_DEBUG_LOGبهذه الطريقة، سيتم تسجيل رسائل الخطأ في ملف السجلات (اللوغ). ثانيًا، يمكن استخدام…error_log()تقوم الدوال بإخراج معلومات التصحيح (debugging information). بالنسبة للتطبيقات ذات المنطق المعقد، يمكن استخدام أدوات تصحيح متخصصة مثل Xdebug لتنفيذ الكود خطوة بخطوة.
كيف يمكن ضمان أمان الإضافات (plugins) أثناء تطويرها؟
قم دائمًا بالتحقق من صحة مدخلات المستخدمين وتنقيتها. استخدم الدوال المدمجة في ووردبريس مثل…esc_html(), esc_attr(), sanitize_text_field()وwp_kses()للتعامل مع الناتج، استخدم طريقة غير مرتبطة بـ CE (Non-CE method).wp_nonce_field()) لمنع تزوير الطلبات بين المواقع (Cross-Site Request Forgery – CSRF). بالنسبة لعمليات قاعدة البيانات، يتم استخدام…$wpdbالطرق (methods) التي توفرها الفئة (class)، أو كيفية استخدامها.prepare()هناك عدة عبارات (statements) يمكن استخدامها لمنع هجمات الاستيلاء على البيانات عبر SQL (SQL Injection Attacks). من بين هذه العبارات:
يجب وضع الإضافات (البرامج الإضافية) على الخادم المحلي أم على الخادم الإلكتروني؟
ننصح بشدة باستخدام بيئة التطوير المحلية (مثل Local أو XAMPP) لإجراء معظم أعمال التطوير. تتميز بيئة التطوير المحلية بسرعة الاستجابة العالية، ولا تتأثر بالشبكة، ويمكن اختبار الأشياء بحرية دون أن يؤثر ذلك على الموقع الإلكتروني الحي. بعد الانتهاء من تطوير الميزات الأساسية، يمكن نشر النسخة إلى بيئة الاختبار عبر الإنترنت لإجراء اختبارات التو
كيفية نشر الإضافة الخاصة بك في الدليل الرسمي لووردبريس (WordPress Official Directory)؟
تحتاج إلى زيارة موقع WordPress.org، وتسجيل حساب مطور، ثم استخدام أداة Subversion (SVN) لإرسال كود الإضافة الخاصة بك. يجب أن تتوافق الإضافة مع المعايير الرسمية للكود ومتطلبات هيكل المجلدات، وأن تحتوي على المكونات الصحيحة.readme.txtبعد الموافقة على الملف، سيتمكن المستخدمون في جميع أنحاء العالم من البحث عن الإضافة الخاصة بك وتثبيتها مباشرة من خلال الواجهة الخلفية.
ما التالي، ما التالي؟
القراءة الموسعة والمعرفة العملية
فيما يلي بعض الموضوعات ذات الصلة بموضوع هذه المقالة وهي مناسبة لمزيد من القراءة المتعمقة. وغالباً ما يكون من الأفضل إعطاء الأولوية للبدء بالمقال الأقرب إلى مشكلتك الحالية ثم التوسع تدريجياً إلى المواضيع المحيطة.
- دليل بناء مواقع الويب الحديثة: العملية الكاملة من البداية حتى الإطلاق، بالإضافة إلى اختيار مكدس التقنيات المناسب
- تحليل العمليات الأساسية والتقنيات الرئيسية في بناء المواقع الإلكترونية
- دليل شامل لتحسين أداء ووردبريس: من الجوهر إلى الواجهة الأمامية، لزيادة السرعة بشكل شامل
- دليل أساسي لمبتدئي بناء المواقع الإلكترونية: إرشادات شاملة لبناء موقع عالي الأداء من الصفر
- كيفية تثبيت وتكوين شهادة SSL لموقعك على ووردبريس (WordPress)