قبل البدء، تأكد من أن لديك بيئة ووردبريس محلية أو عبر الإنترنت مخصصة للتطوير والاختبار. بيئات مثل Local، XAMPP، أو MAMP تعتبر خيارات جيدة لهذا الغرض. بالإضافة إلى ذلك، ستحتاج إلى جهاز كمبيوتر مثبت عليه محرر كود (مثل Visual Studio Code أوPhpStorm)، ويجب أن تكون على دراية أساسية بلغات البرمجة PHP وHTML وCSS وJavaScript.
امتلاك بيئة تطوير واضحة ومنظمة هو أساس جميع الأعمال اللاحقة، فهو يسمح لك بالتركيز على منطق الكود نفسه، بدلاً من التفكير في إعدادات البيئة.
قم بإنشاء ملف الإضافة (plugin) الخاص بك الأول.
يحتاج أي إضافة (plugin) لـ WordPress إلى ملف PHP رئيسي واحد على الأقل، ويجب أن يحتوي هذا الملف على تعليق خاص يُعرف بـ "plugin header"، وذلك لتزويد نظام WordPress بمعلومات إضافية (metadata) عن الإضافة نفسها.
القراءة الموصى بها دليل شامل لتطوير إضافات ووردبريس: من الصفر إلى إنشاء إضافة محترفة。
تعليقات رأس الإضافة (Plugin Header Comments) والملف الرئيسي (Main File)
أولاً، في دليل تثبيت ووردبريس… wp-content/plugins/ داخل المجلد، قم بإنشاء مجلد جديد، على سبيل المثال… my-first-pluginداخل هذا المجلد، قم بإنشاء الملف الرئيسي. my-first-plugin.phpيجب إضافة تعليقات رأس الإضافة (plugin header comments) القياسية في بداية الملف.
<?php
/**
* Plugin Name: 我的第一个功能插件
* Plugin URI: https://yourwebsite.com/my-first-plugin
* Description: 这是一个学习 WordPress 插件开发的示例插件,用于在前端页面底部添加自定义文本。
* Version: 1.0.0
* Author: 你的名字
* Author URI: https://yourwebsite.com
* License: GPL v2 or later
* Text Domain: my-first-plugin
*/ هذا التعليق يعتبر “بطاقة الهوية” للإضافة (البرنامج الإضافي). يقوم ووردبريس (WordPress) بقراءة هذا التعليق لفهم كيفية عمل الإضافة وما هي وظائفها. Plugin Name سيتم عرض اسم الإضافة في واجهة الإدارة الخلفية، كما سيتم عرض المعلومات الأخرى مثل رقم الإصدار والوصف في المواقع المناسبة. بعد حفظ الملف، ستتمكن من رؤية هذه الإضافة غير المفعلة في صفحة “الإضافات” داخل واجهة إدارة ووردبريس.
تنفيذ الميزة: إضافة خطافات للإجراءات (Action Hooks)
تتم إدارة منطق الإضافات (Plugins) بشكل أساسي من خلال نظام الخطافات (Hooks) في ووردبريس (WordPress). سنقوم باستخدام هذا النظام لتنفيذ الوظائف المطلوبة. wp_footer هذا “خطاف الإجراء” (action hook) يقوم بعرض نص معين في أسفل صفحة الموقع الإلكتروني.
أضف الكود التالي أسفل تعليقات رأس الإضافة (plugin header comments):
// 在网站页脚添加自定义文本
function mfp_add_footer_text() {
echo '<p style="text-align: center; color: #666;">شكرًا لقراءتك! تم إنشاء هذا القسم السفلي من الصفحة بواسطة “أول إضافة وظيفية لي”.</p>';
}
add_action( 'wp_footer', 'mfp_add_footer_text' ); هنا، قمنا بإنشاء شيء يُسمى… mfp_add_footer_text استخدم الدالة المخصصة الخاصة بك، ثم استمر في استخدامها. add_action() الدالة تقوم بـ “تثبيت” هذه الدالة (أي تجعلها قابلة للاستخدام مباشرةً من قبل البرامج الأخرى). wp_footer هذا المعلق موجود هناك؛ عندما يصل نظام ووردبريس إلى موقع قسم القائمة السفلية (الفوتر)، سيتم استدعاء دالتنا تلقائيًا لعرض تلك الفقرة من الكود HTML.
القراءة الموصى بها بناء أول إضافة (Plugin) لموقع ووردبريس الخاص بك خطوة بخطوة: من المبادئ الأساسية إلى التطوير العملي。
إضافة صفحة لإعدادات إدارة الإضافة
عادةً ما يحتاج الإضافة (البرنامج الإضافي) الذي يتمتع بميزات كاملة إلى واجهة تكوين خلفية، تسمح للمستخدمين بتعديل سلوك الإضافة دون الحاجة إلى تعديل الكود. سنقوم بإنشاء صفحة خيارات بس
إنشاء عناصر قائمة الإدارة
أولاً، نحن بحاجة إلى استخدام add_action( ‘admin_menu’, … ) لإضافة عنصر قائمة جديد في الواجهة الخلفية للإدارة، استمر في إضافة الكود التالي إلى ملف الإضافة الرئيسي الخاص بك:
// 添加管理菜单
function mfp_add_admin_menu() {
add_menu_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 权限要求
'mfp-settings', // 菜单slug
'mfp_settings_page', // 显示页面内容的回调函数
'dashicons-admin-generic', // 图标(使用Dashicons)
30 // 菜单位置
);
}
add_action( 'admin_menu', 'mfp_add_admin_menu' ); add_menu_page() الدوال (Functions) هي واجهات برمجة التطبيقات (APIs) المقدمة من نواة ووردبريس (WordPress Core)، وتُستخدم لإضافة القوائم الرئيسية (Top Menus) إلى شريط التنقل الأيسر. لقد حددنا الصلاحيات المطلوبة لاستخدام هذه الدوال manage_optionsعادةً، يكون الوصول إليه متاحًا فقط للمسؤولين (المديرين).
إنشاء صفحة إعدادات ونموذج
بعد ذلك، نحتاج إلى تعريف الدالة الاستدعائية (callback function) المذكورة أعلاه. mfp_settings_page لتقديم محتوى HTML الخاص بصفحة الإعدادات ومعالجة عملية حفظ بيانات النموذج.
// 设置页面的HTML内容
function mfp_settings_page() {
// 检查用户权限
if ( !current_user_can( ‘manage_options’ ) ) {
return;
}
// 处理表单提交
if ( isset( $_POST[‘mfp_footer_text’] ) ) {
// 验证和清理输入数据
$new_text = sanitize_text_field( $_POST[‘mfp_footer_text’] );
// 使用 update_option 将数据保存到数据库
update_option( ‘mfp_footer_text’, $new_text );
echo ‘<div class="“notice" notice-success is-dismissible”><p>تم تعيين الإعدادات وحفظها!</p></div>’;
}
// 从数据库获取现有值,用于填充表单
$current_text = get_option( ‘mfp_footer_text’, ‘这是默认的页脚文本。’ );
?>
<div class="“wrap”">
<h1>إعدادات الإضافة الخاصة بي</h1>
<form method="“post”" action="/ar/“”/" data-trp-original-action="“”">
<?php wp_nonce_field( ‘mfp_save_settings’, ‘mfp_settings_nonce’ ); ?>
<table class="“form-table”">
<tr>
<th scope="“row”"><label for="“mfp_footer_text”">نص القائمة السفلية المخصص</label></th>
<td>
<input name="“mfp_footer_text”" type="“text”" id="“mfp_footer_text”" value="“NO NUMERIC NOISE KEY" 1001” class="“regular-text”">
<p class="“description”">سيتم عرض هذا النص في أسفل جميع صفحات الموقع.</p>
</td>
</tr>
</table>
<?php submit_button(); ?>
<input type="hidden" name="trp-form-language" value="ar"/></form>
</div>
أنا لا أعرف ماذا أقول. هذه الدالة أنجزت عدة مهام رئيسية: التحقق من الصلاحيات، ومعالجة إرسال النماذج (باستخدام…). update_option التخزين، بالإضافة إلى عرض واجهات النماذج (Forms). لاحظ أنه تم استخدام… sanitize_text_field() و esc_attr() تستخدم وظائف أمان مختلفة لمنع هجمات XSS.
جعل الميزات قابلة للتكوين (Making features configurable)
الآن، نحتاج إلى تعديل الدالة التي كانت تقوم بعرض نص القائمة السفلية سابقًا، بحيث تقرأ الإعدادات الخاصة بالمستخدم من قاعدة البيانات بدلاً من عرض نص محفوظ مسبقًا (مكتوب بشكل ثابت).
القراءة الموصى بها إتقان تطوير إضافات ووردبريس من الصفر: دليل كامل وتطبيقات عملية。
// 更新页脚文本函数,使其可配置
function mfp_add_footer_text() {
// 从数据库获取保存的文本,如果没有则使用默认值
$footer_text = get_option( ‘mfp_footer_text’, ‘感谢阅读!本页脚由“我的第一个功能插件”生成。’ );
if ( !empty( $footer_text ) ) {
echo ‘<p style="“text-align:" center; color: #666;”>’ . esc_html( $footer_text ) . ‘</p>’;
}
}
add_action( ‘wp_footer’, ‘mfp_add_footer_text’ ); وبهذه الطريقة، تم إنشاء إضافة (plugin) تتمتع بوظائف إدارة أساسية في الخلفية. يمكن للمستخدمين تعديل النصوص في الخلفية، وسيتم عرض التغييرات فورًا في الموقع الإلكتروني الأمامي.
أفضل الممارسات في تطوير الإضافات والأمان
اتباع أفضل الممارسات لا يساعد فقط على تحسين جودة الكود، بل يضمن أيضًا أمان الإضافات (البرامج الإضافية) وتوافقها مع الأنظمة المختلفة.
استخدام البادئات (prefixes) ومساحات الأسماء (namespaces)
يجب أن تستخدم جميع الدوال والفئات والمتغيرات وأسماء الخيارات التي قمت بتعريفها برمزاً أوسمة (prefix) فريداً لتجنب حدوث تعارض مع نواة ووردبريس (WordPress core) أو الثيمات (themes) أو الإضافات (plugins) الأخرى. في هذا المثال، قمنا باستخد mfp_ "(My First Plugin)" كبادئة لأسماء الإضافات (plugins). بالنسبة للإضافات الأكثر تعقيدًا، يمكن النظر في استخدام مساحات الأسماء (namespaces) في لغة PHP.
المصادقة والتنظيف والهروب من الأحرف الخاصة.
هذا هو جوهر أمان الإضافات (البرامج الإضافية). يجب اعتبار جميع المدخلات القادمة من المستخدمين (بما في ذلك المسؤولين) غير موثوقة.
* 验证 (Validation): 检查数据是否符合预期格式(如是否为邮箱、数字)。
* 清理 (Sanitization): 在将数据存入数据库或用于其他操作前,移除其中的非法或危险字符。我们使用了 sanitize_text_field()。
* 转义 (Escaping): 在将数据从数据库输出到 HTML、JavaScript 或 URL 时,进行转义以防止 XSS 攻击。我们使用了 esc_html() و esc_attr()。
الاستعداد للتدويل
لكي يتمكن المستخدمون حول العالم من ترجمة الإضافة، يجب أن تكون جميع النصوص الموجهة للمستخدمين محاطة بوظائف الترجمة الخاصة بـ WordPress. قم بتعديل طريقة عرض النصوص لدينا.
`echo ‘`‘<p style="“text-align:" center; color: #666;”>’ . esc_html__( ‘感谢阅读!本页脚由“我的第一个功能插件”生成。’, ‘my-first-plugin’ ) . ‘</p>’; وتأكد من أن التعليمات الصحيحة قد تم تحديدها في تعليقات رأس الإضافة (plugin header comments). Text Domainثم استخدم أدوات مثل Poedit لإنشاء ملف القالب (.pot).
التصحيح والاختبار والاستعداد للنشر
قبل وضع الإضافة (البرنامج الإضافي) في بيئة الإنتاج أو تقديمها إلى الدليل الرسمي، من الضروري إجراء اختبارات شاملة.
تفعيل وضع التصحيح (Debug Mode)
في ملفات تكوين ووردبريس (WordPress Configuration Files) wp-config.php في هذا السياق، تفعيل وضع التصحيح (Debugging Mode) يسمح لك برؤية أخطاء PHP وتحذيراتها وإشعاراتها، وهو أمر مفيد للغاية أثناء عملية التطوير.
define( ‘WP_DEBUG’, true );
define( ‘WP_DEBUG_LOG’, true ); // 将错误记录到 wp-content/debug.log 文件
define( ‘WP_DEBUG_DISPLAY’, false ); // 不在页面上直接显示错误 إجراء اختبارات الوظائف والتوافق
- اختبار الوظائف: اختبار جميع وظائف الإضافة واحدة تلو الأخرى: تفعيل/تعطيل الإضافة، حفظ الإعدادات، والتأكد من أن النتائج المعروضة في الواجهة الأمامية صحيحة.
- اختبارات التوافق: قم باختبار إضافتك في إصدارات مختلفة من ووردبريس (خاصة الإصدارات الأقدم)، وإصدارات لغة PHP (7.4+ و8.x)، بالإضافة إلى القوالب الشائعة والإضافات المستخدمة بشكل واسع.
- فحص الأمان: يمكن استخدام أدوات أوتوماتيكية أو مراجعة الكود يدويًا للتأكد من عدم وجود ثغرات مثل هجمات SQL Injection، XSS، CSRF، وغيرها. لقد أضفنا مؤخرًا حقل “Nonce” لمنع هجمات CSRF.
جاهز لنشر الملف.
إذا كان من المقرر نشر المحتوى، فمن الضروري وجود هيكل ملفات قياسي. يشمل هذا الهيكل عادةً ما يلي:
* 主插件文件 (如 my-first-plugin.php)
* readme.txtيجب أن يتم كتابة المحتوى وفقًا لتنسيق موقع WordPress.org، وذلك لعرضه على صفحة دليل الإضافات (Plugins Directory).
* assets المجلد: يُستخدم لتخزين الأيقونات، لقطات الشاشة، وغيرها.
* languages المجلد: يحتوي على ملفات الترجمة (.po/.mo).
* includes المجلد: يُستخدم لتخزين ملفات الكلاسات الأخرى في لغة PHP.
* uninstall.phpتحديد العمليات التي يتم تنفيذها عند حذف الإضافة (مثل حذف البيانات من قاعدة البيانات).
الملخصات
من خلال هذا الدليل، لقد أكملت العملية الكاملة لتطوير إضافة وظيفية بسيطة لموقع ووردبريس: بدءًا من إنشاء الملف الرئيسي الذي يحتوي على معلومات الرأس القياسية، مرورًا بإضافة الوظائف باستخدام خطافات الأفعال (action hooks)، وانتهاءً ببناء صفحة إعدادات خلفية كاملة مع ضمان أمانها. لقد ركزنا على أفضل الممارسات مثل استخدام الأسماء المسبقة (prefixes)، ومعالجة البيانات بأمان، ودعم الترجمة الدولية (internationalization)، بالإضافة إلى تقديم نظرة عامة موجزة على الخط
تذكّر أن جوهر تطوير الإضافات (Plugins) يكمن في فهم واستخدام نظام الخطافات (Hooks) والمرشحات (Filters) الضخم المتاح في ووردبريس (WordPress) بشكل ماهر. انطلاقًا من هذه الإضافة الصغيرة، يمكنك المضي قدمًا في استكشاف كيفية إضافة أكواد قصيرة (Shortcodes)، أدوات تحكم (Widgets)، أنواع مقالات مخصصة (Custom Post Types – CPTs)، أو نقاط نهاية لواجهة برمجة التطبيقات الخدمية (REST API endpoints)، وبذلك بناء إضافات قوية ومرنة ومتوافقة مع المعايير على مستوى الأعمال.
الأسئلة الشائعة الأسئلة المتداولة
يجب وضع المكونات الإضافية (الإضافات) في أي دليل (directory)؟
يجب وضع إضافات ووردبريس في مجلد المكونات الإضافية. wp-content/plugins/ داخل المجلد، يمكن أن يكون كل إضافة ملفًا PHP مستقلًا (وهو الأمر المناسب للإضافات البسيطة جدًا)، لكن الطريقة الأكثر شيوعًا هي إنشاء مجلد باسم اسم الإضافة، ووضع الملف الرئيسي للإضافة بالإضافة إلى ملفات الموارد الأخرى داخل هذ
كيف يمكن حذف البيانات التي تم إنشاؤها بواسطة الإضافات (plugins)؟
عندما يقوم المستخدم بالنقر على خيار “حذف” الإضافة في الواجهة الخلفية، فإن الإجراء الافتراضي يقتصر فقط على حذف ملف الإضافة نفسها، بينما تبقى البيانات المتعلقة بالإضافة المخزنة في قاعدة البwp_optionsسيتم الاحتفاظ بالبيانات الموجودة داخلها. من أجل التنظيف الكامل، ستحتاج إلى إنشاء… uninstall.php الملف، واستخدمه في ذلك. delete_option() هذه الدالة مخصصة لحذف الخيارات ذات الصلة. يتم استدعاء هذا الملف فقط عندما يقوم المستخدم بحذف الإضافة باستخدام وظيفة الحذف المتاحة في ووردبريس.
ما الفرق بين الإجراءات (Actions) والمرشحات (Filters) الموجودة في الخطافات (Hooks)؟
معقدات الإجراءات (Action Hooks)، كيفية استخدامها add_action()يسمح لك هذا الإعداد بإدراج وتنفيذ قطعة من الكود في نقطة زمنية محددة أثناء تشغيل ووردبريس، دون أن يتم توقع أي قيمة ناتجة عن تنفيذ هذا الكود. على سبيل المثال، يمكنك تنفيذ دالة معينة في الرأس (header) أو القدم
معلقات المرشحات (Filter Hooks)، كيفية استخدامها؟ add_filter()هذا يسمح لك بتعديل البيانات التي يتم نقلها خلال العملية. يتلقى هذا الكود قيمة معينة، وبعد معالجتها يجب أن يعيد قيمة أخرى. على سبيل المثال، يمكن استخدامه لتعديل عنوان المقالة، محتوى التعل
لماذا لا تظهر الإضافة الخاصة بي في الواجهة الخلفية؟
أولاً، يرجى التأكد من أن ملف PHP الرئيسي للإضافة الخاصة بك موجود في الدليل الصحيح، وأن تعليقات بداية الإضافة (خاصةً…) موجودة بشكل صحيح. Plugin Name:أولاً، يجب التأكد من أن تنسيق الملف صحيح وخالي من أي أخطاء. ثانياً، يجب فحص الملف للبحث عن أي أخطاء نحوية (syntax errors). يمكنك القيام بذلك باستخدام أدوات متخصصة لتحليل الكود أو برامج مدققة للن wp-config.php افتحه في الصين. WP_DEBUG للتحقق من معلومات الأخطاء المحتملة.
ما التالي، ما التالي؟
القراءة الموسعة والمعرفة العملية
فيما يلي بعض الموضوعات ذات الصلة بموضوع هذه المقالة وهي مناسبة لمزيد من القراءة المتعمقة. وغالباً ما يكون من الأفضل إعطاء الأولوية للبدء بالمقال الأقرب إلى مشكلتك الحالية ثم التوسع تدريجياً إلى المواضيع المحيطة.
- دليل تطوير إضافات ووردبريس: كيف تبني إضافتك المخصصة الأولى من الصفر
- كيف تصبح مطورًا لإضافات ووردبريس: دليل شامل من الصفر إلى النهاية
- دليل شامل لتطوير إضافات ووردبريس: من المبتدئين إلى الخبراء في إنشاء إضافات متخصصة
- من الصفر إلى الواحد: شرح مفصل لكامل عملية تطوير مواقع ووردبريس ودليل عملي للتطبيق العملي
- تطوير الإضافات في ووردبريس: من الأساسيات إلى الاحترافية - إنشاء أول إضافة مخصصة لك.