الاستعدادات وتكوين البيئة
قبل البدء في أي عملية برمجة فعلية، من الضروري إنشاء بيئة تطوير محلية مستقرة وفعالة. ستكون هذه البيئة بمثابة بيئة اختبار لجميع عمليات تطوير المكونات الإضافية والاختبار والتصحيح، مما يضمن عدم تأثيرها على مواقع الويب الإنتاجية عبر الإنترنت.
الطريقة الأسهل هي استخدام برامج تكامل الخادم المحلية، مثل XAMPP أو MAMP (لنظام التشغيل Mac) أو Local by Flywheel. تقوم هذه الأدوات بتثبيت Apache (أو Nginx) وقاعدة بيانات MySQL و PHP بنقرة واحدة، مما يضمن تلبية متطلبات تشغيل WordPress بشكل مثالي. بعد تثبيت الخادم المحلي، يجب تنزيل أحدث إصدار من ملفات WordPress الأساسية وإلغاء ضغطها في الدليل الجذري للويب على الخادم (مثل htdocs أو www)، وإكمال تهيئة موقع WordPress وفقًا لعملية “التثبيت في خمس دقائق” الشهيرة.
بعد ذلك، تحتاج إلى محرر كود مناسب. على الرغم من أن أي محرر نصوص سيفي بالغرض، إلا أن استخدام محرر مصمم خصيصًا للمبرمجين (مثل Visual Studio Code أو PhpStorm أو Sublime Text) سيزيد من كفاءتك بشكل كبير. فهي توفر ميزات مثل تمييز التركيب النحوي، واستكمال التعليمات البرمجية تلقائيًا، وتنبيهات الأخطاء، ومحطة طرفية تكاملية. يُنصح بشدة بتثبيت مقتطفات الكود ذات الصلة بـ WordPress والمكونات الإضافية للإدراك الذكي في محررك.
القراءة الموصى بها دليل للبدء في تطوير إضافات ووردبريس: كيفية بناء أول إضافة مخصصة الخاصة بك من الصفر。
أخيرًا، من أجل تسهيل إدارة إصدارات الكود والتعاون بين الفريق، يجب أن تكون على دراية بنظام التحكم في الإصدارات.Git إنه الخيار السائد حاليًا. قم بتهيئة ملف .gitignore في مجلد مشروعك. Git المستودع، وربطه بمستودعات عن بعد (مثل GitHub أو GitLab أو Bitbucket). وهذا لا يساعد فقط على الاحتفاظ بنسخة احتياطية من عملك، بل يتيح أيضًا تتبع كل تغيير في الشفرة بشكل واضح.
إنشاء أول إضافة WordPress الخاصة بك.
دعونا نبدأ بإنشاء أبسط الإضافات، لكنها كاملة الهيكل، مما سيساعدك على فهم التركيب الأساسي للإضافات. إضافة WordPress هي في الأساس ملف أو أكثر من ملفات PHP، يتم وضعها في مجلد "wp-content/plugins". /wp-content/plugins/ تحتاج إلى وضع ملف robots.txt في دليل الجذر لموقعك على الويب، وإعلام WordPress بوجوده من خلال تضمين ملاحظات رأس بتنسيق معين.
أولاً، أدخل. /wp-content/plugins/ الكتالوج، قم بإنشاء مجلد جديد باسم المكون الإضافي الخاص بك، على سبيل المثال. my-first-pluginفي هذا المجلد، قم بإنشاء ملف الإضافة الرئيسي، والذي عادةً ما يُسمى بنفس اسم المجلد متبوعًا بـ . .php اللاحقات، مثل my-first-plugin.phpافتح هذا الملف باستخدام محرر الشفرة الخاص بك.
إنشاء معلومات رأس الملف الرئيسي للإضافة.
يجب أن يحتوي بداية ملف الإضافة على كتلة تعليقات PHP بتنسيق قياسي. هذه المعلومات الأولية ضرورية للتعرف على الإضافة وعرضها في واجهة الإدارة الخلفية لـ WordPress. أدخل الشفرة التالية:
<?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 الخاصة بك، وانتقل إلى قائمة “الإضافات”، ويجب أن ترى “أول إضافة لديّ” في قائمة الإضافات. يمكنك تفعيلها أو إلغاء تفعيلها هنا. في الوقت الحالي، لا تقوم هذه الإضافة بأي شيء، لكنك قد أنشأت بنجاح إضافة معتمدة من WordPress.
القراءة الموصى بها من الصفر إلى الواحد: دليل موثوق ودروس عملية لتطوير إضافات ووردبريس。
إضافة الوظيفة الأولى للإضافة.
الآن، دعونا نضيف ميزة بسيطة لهذا المكون الإضافي: إضافة سطر من النص المخصص في تذييل موقع الويب. سنستخدم ووردبريس لذلك. wp_footer يتم تحقيق ذلك باستخدام الكود التالي. في الملف الرئيسي للإضافة، أضف الشفرة التالية أسفل معلومات الرأس:
/**
* إخراج نص مخصص في تذييل الموقع
*/
دالة myfp_add_footer_footer_text() {
صدى'<p style="text-align: center; color: #666;">شكرًا لاستخدامك أول إضافة (plugin) من تطويري!</p>';
}
add_action( 'wp_footer', 'myfp_add_footer_text' ); بعد حفظ الملف، قم بتحديث واجهة موقعك الإلكتروني، ثم انزلق إلى أسفل الصفحة، ويجب أن تتمكن من رؤية النص الذي تم إضافته. من خلال هذا المثال، قمت بتطبيق مفهومين أساسيين في تطوير ووردبريس: كتابة دالة وظيفية، ثم استخدامها لتنفيذ ما تريد في موقعك. add_action() ستقوم الوظيفة بتوصيل "الخطاف" (Hook) الخاص بها إلى موقع محدد في دورة حياة WordPress.wp_footer)。
في الصميم: الخطافات والفلاتر.
الـ hooks هي أساس تطوير الإضافات في ووردبريس. فهي توفر القدرة على “إدراج” شفرة مخصصة في نقاط محددة أثناء تنفيذ شفرة ووردبريس الأساسية أو المظاهر أو الإضافات الأخرى، دون تعديل الملفات الأصلية. تنقسم الـ hooks بشكل أساسي إلى نوعين: الأحداث (Action) والفلتر (Filter).
فهم مُحدِّثات الأحداث واستخدامها.
تسمح مُعلقات الإجراءات لك بتنفيذ دالات مخصصة عند وقوع أحداث معينة. على سبيل المثال، عندما يتم نشر مقالة ما.publish_postعندما يقوم المستخدم بتسجيل الدخول،wp_login) ، أو كما فعلنا سابقًا، عند إخراج النص في تذييل الصفحة (wp_footerاستخدمه. add_action() استخدم الدالة لإضافة وظيفة الاستدعاء الخاصة بك.
فيما يلي مثال أكثر فائدة: عندما يسجل مستخدم جديد، أرسل إشعارًا بالبريد الإلكتروني إلى المسؤول.
/**
* 新用户注册时通知管理员
* @param int $user_id 新注册用户的ID
*/
function myfp_notify_admin_on_registration( $user_id ) {
$user = get_userdata( $user_id );
$admin_email = get_option( 'admin_email' );
$subject = '有新用户注册!';
$message = sprintf( '新用户 %s (邮箱:%s) 刚刚完成了注册。', $user->user_login, $user->user_email );
wp_mail( $admin_email, $subject, $message );
}
add_action( 'user_register', 'myfp_notify_admin_on_registration' ); استفد من القوة الكبيرة للمرشحات.
تسمح لك خطافات الفلتر بتعديل البيانات المنقولة في العملية. يمكنك تغيير محتوى النص، وقيم الخيارات، ومعلمات الاستعلام، وكل شيء تقريبًا. تستخدم الفلاتر apply_filters() تحديد نقاط البيانات للدالة، واستخدامها. add_filter() استخدم الدالة append لإضافة دالة التعديل الخاصة بك.
القراءة الموصى بها دليل شامل لتطوير إضافات ووردبريس: من الصفر إلى نشرها وتشغيلها على الخادم بشكل فعلي。
على سبيل المثال، تريد أن تضيف تلقائيًا إشعار حقوق الطبع والنشر في نهاية محتوى جميع المقالات.
/**
* 在所有文章内容末尾添加版权声明
* @param string $content 原始文章内容
* @return string 修改后的文章内容
*/
function myfp_add_copyright_to_content( $content ) {
if ( is_single() ) { // 仅在单篇文章页面生效
$copyright_text = '<div class="my-copyright">© جميع الحقوق محفوظة. يُحظر إعادة النشر.</div>';
$content .= $copyright_text;
}
return $content;
}
add_filter( 'the_content', 'myfp_add_copyright_to_content' ); فهم الفرق بين الإجراءات (التي تُستخدم لتنفيذ المهام) والفلاتر (التي تُستخدم لتعديل البيانات) واستخدامها أمرٌ أساسيٌ لكي تصبح مطورًا متقدمًا في ووردبريس.
التطوير المتقدم: بنية الإضافات والأمان.
مع تزايد عدد الإضافات، أصبح من الصعب صيانة جميع الأكواد الموجودة في الملف الرئيسي. لذا فإن هيكل المشروع الجيد أمر بالغ الأهمية. وفي الوقت نفسه، يجب أن تكون الأمان مضمنة في كل مرحلة من مراحل التطوير.
بناء بنية قابلة للصيانة للإضافات.
قد يبدو دليل الإضافات النموذجي ذو الهيكل الواضح على النحو التالي:
my-advanced-plugin/
├── my-advanced-plugin.php // 主插件文件,负责引导和核心设置
├── includes/ // 核心功能类或函数文件
│ ├── class-core.php // 主功能类
│ ├── class-admin.php // 后台管理逻辑
│ └── class-public.php // 前端逻辑
├── admin/ // 后台相关资源
│ ├── css/
│ ├── js/
│ └── partials/ // 管理页面模板
├── public/ // 前端相关资源
│ ├── css/
│ ├── js/
│ └── partials/
├── assets/ // 共享资源,如图标、图片
├── languages/ // 国际化语言文件
└── uninstall.php // 插件卸载时执行的清理代码 في الملف الرئيسي للإضافة، استخدم. require_once يمكن إدراج ملفات من الدليل الآخر حسب الحاجة. تسمح هذه البنية المُقسمة إلى وحدات بتقسيم الكود بشكل واضح، مما يسهل التعاون بين الفريق وتوسيع الوظائف في المستقبل.
تنفيذ ممارسات أمنية حاسمة.
في النظام البيئي لـ WordPress، لا يمكن تجاهل الأمان. فيما يلي بعض المبادئ التي يجب اتباعها:
1- التحقق من البيانات (Validation): التحقق من جميع المدخلات غير الموثوقة من المستخدمين أو من مصادر خارجية (مثل $_GET, $_POST, $_COOKIEلإجراء التحقق، تأكد من أنها تتوافق مع التنسيق المتوقع. استخدم وظائف مثل sanitize_text_field(), intval(), filter_var()。
2. 数据转义 (Escaping): 在将任何数据输出到浏览器(HTML、JavaScript、URLs)之前,必须进行转义,以防止跨站脚本(XSS)攻击。使用函数如 esc_html(), esc_js(), esc_url()。
3. 能力检查 (Capability Checks): 在执行管理操作或访问敏感数据前,始终检查当前用户是否有足够的权限。使用 current_user_can() دالة.
4- التحقق من رقم Nonce: بالنسبة لجميع الطلبات التي تتضمن تغيير البيانات (مثل إرسال النماذج، وعمليات AJAX)، يجب استخدام رقم Nonce عشوائي لمرة واحدة للتحقق من نية المستخدم ومصدر الطلب، لمنع تزييف طلبات عبر المواقع (CSRF).
فيما يلي مثال يجمع بين الممارسات الأمنية لإنشاء وظيفة لحفظ خيارات الإعدادات الأمنية:
// 在表单提交处理中
function myfp_save_settings() {
// 1. 检查权限
if ( ! current_user_can( 'manage_options' ) ) {
wp_die( '权限不足。' );
}
// 2. 验证 Nonce
if ( ! isset( $_POST['myfp_settings_nonce'] ) || ! wp_verify_nonce( $_POST['myfp_settings_nonce'], 'myfp_save_action' ) ) {
wp_die( '安全校验失败,请重试。' );
}
// 3. 验证和清理输入数据
$option_value = sanitize_text_field( $_POST['my_option'] );
// 4. 保存到数据库 (update_option 有自己的数据清理机制,但我们已经做了)
update_option( 'myfp_custom_option', $option_value );
// 5. 重定向并添加成功消息
wp_redirect( add_query_arg( 'message', 'saved', admin_url( 'admin.php?page=myfp-settings' ) ) );
exit;
}
add_action( 'admin_post_myfp_save_settings', 'myfp_save_settings' ); الملخصات
يعد تطوير المكونات الإضافية لـ WordPress رحلةً تبدأ بفهم البنية الأساسية، ثم تتعمق تدريجيًا في آلية خطوط الربط الأساسية، وتنتهي بإتقان بناء تطبيقات آمنة وقابلة للصيانة. من خلال إنشاء مكون إضافي بسيط، تتعلم كيف يتعرف WordPress على كودك. باستخدام خطوط الربط للإجراءات والفلاتر، تتقن الطرق الأساسية للتفاعل مع نواة WordPress، وتقوم بتوسيع الوظائف وتخصيص البيانات. وأخيرًا، من خلال تخطيط بنية المشروع وتطبيق ممارسات الأمان، تضمن استقرار المكون الإضافي وقابليته للتوسعة ومقاومته للتهديدات. من خلال الممارسة المستمرة، وقراءة الكود الأساسي، والمشاركة في مجتمع مطوري WordPress، ستتمكن من الانتقال من المبتدئ إلى الخبير، وإنشاء مكونات إضافية محترفة لـ WordPress.
الأسئلة الشائعة الأسئلة المتداولة
ما المعرفة الأساسية اللازمة لتطوير إضافات WordPress؟
تحتاج إلى أن تكون على دراية بأساسيات لغة البرمجة PHP، لأن الإضافات مكتوبة بشكل أساسي بلغة PHP. في الوقت نفسه، سيكون من المفيد للغاية أن يكون لديك فهم أساسي لـ HTML وCSS وJavaScript عند تطوير إضافات تتضمن تفاعلًا في الواجهة الأمامية. كما أن فهم المفاهيم الأساسية لقاعدة بيانات MySQL (مثل الاستعلام والإضافة والحذف والتعديل والبحث) سيساعدك أيضًا في التعامل مع البيانات المعقدة. وبالطبع، أهم شيء هو أن تكون على دراية بالمفاهيم الأساسية لـ WordPress، مثل المقالات والصفحات وأدوار المستخدمين ونظام الخطافات الموضح بالتفصيل أعلاه.
كيف أضيف صفحة قائمة إدارية منفصلة للمكوّن الإضافي الخاص بي؟
استخدم وظائف API للقائمة الخلفية المقدمة من WordPress. عادةً، تستخدم هذه الوظائف في دالة واحدة. add_menu_page() أو add_submenu_page() يستخدم هذا الدالة لتسجيل عناصر القائمة والدالات المرتبطة بها. يجب توصيل هذا الإجراء بـ admin_menu على الخطاف. في دالة الاستدعاء، يمكنك إخراج HTML لبناء صفحة الإعدادات الخاصة بك، ومعالجة إرسال النماذج.
كيف يجب أن تتفاعل الإضافات مع قاعدة بيانات WordPress؟
يوفر ووردبريس كائنًا عالميًا. $wpdbإنها فئة مجردة قوية لقاعدة البيانات، تُستخدم لتنفيذ استعلامات SQL مخصصة. ولتخزين البيانات بشكل أكثر منظمًا، يُوصى باستخدام واجهة برمجة التطبيقات (API) الخاصة بـ WordPress.get_option(), update_option(), add_option()يمكن استخدام قواعد البيانات لتخزين أزواج المفاتيح والقيم البسيطة، أو استخدام واجهات برمجة التطبيقات (APIs) المتعلقة ببيانات المقالات (article metadata APIs).add_post_meta(), get_post_meta()يمكنك استخدام ملفات wp-config.php و wp-content/plugins/akismet/akismet.php لتخزين البيانات المتعلقة بمقالات أو صفحات معينة أو أنواع مقالات مخصصة. حاول تجنب كتابة SQL الأصلي بشكل مباشر.
كيف يمكنني أن أجعل إضافتي تدعم التدويل متعدد اللغات؟
يستخدم WordPress مكدس تقنيات GNU gettext لتحقيق التدويل (i18n). يجب عليك إكمال الخطوات التالية: أولاً، في كود الإضافة الخاصة بك، قم بتحديد جميع النصوص التي تحتاج إلى ترجمة باستخدام علامات معينة (مثل `%s` أو `%1$s` أو `{{var}}`). (), esc_html() أو _e() أولاً، يجب تغليف دالة الانتظار (الانتظار حتى يتم إكمال عملية معينة). ثانياً، يجب استخدام هذه الدالة في بداية ملف الإضافة (البرنامج الإضافي). load_plugin_textdomain() دالة لتحميل ملفات الترجمة. وأخيرًا، استخدم أدوات مثل Poedit لإنشاءها. .pot ملفات القالب، التي يستخدمها المترجمون لإنشاء نصوص بلغات محددة. .po و .mo ملف.
كيف يمكنني اختبار مكوّني الإضافي دون إتلاف الموقع؟
يُنصح بشدة إجراء جميع عمليات التطوير والاختبار الأولي في بيئة التطوير المحلية (مثل XAMPP، Local by Flywheel) أو على خادم اختبار مستقل وغير عام (خادم الترحيل). لا تقم أبدًا بتطوير واختبار مكون إضافي جديد وغير مُختبر بشكل كافٍ مباشرةً على موقع الويب الإنتاجي. في البيئة المحلية أو مرحلة الاختبار، يمكنك إثارة الأخطاء وتصحيح الشفرة دون خوف من التأثير على المستخدمين الحقيقيين وبيانات موقع الويب.
ما التالي، ما التالي؟
القراءة الموسعة والمعرفة العملية
فيما يلي بعض الموضوعات ذات الصلة بموضوع هذه المقالة وهي مناسبة لمزيد من القراءة المتعمقة. وغالباً ما يكون من الأفضل إعطاء الأولوية للبدء بالمقال الأقرب إلى مشكلتك الحالية ثم التوسع تدريجياً إلى المواضيع المحيطة.
- كيفية اختيار وتخصيص تصميم ووردبريس المثالي الذي يناسب احتياجاتك؟
- دليل تطوير إضافات ووردبريس: كيف تبني إضافتك المخصصة الأولى من الصفر
- كيف تصبح مطورًا لإضافات ووردبريس: دليل شامل من الصفر إلى النهاية
- من الصفر إلى الواحد: دليل شامل وخطوات عملية لبناء مواقع إلكترونية مهنية باستخدام WordPress
- تطوير مواقع ووردبريس الاحترافية: بناء مواقع شركات استجابية من الصفر