المفاهيم الأساسية والاستعدادات اللازمة
تطوير إضافات ووردبريس (WordPress Plugins) يعني كتابة وحدات كود PHP مستقلة خارج الوظائف الأساسية لووردبريس، بهدف توسيع وتحسين ميزات الموقع الإلكتروني. فهم آلية عمل هذه الإضافات هو الخطوة الأولى نحو النجاح. يعتمد ووردبريس على نمطي البرمجة المبني على الأحداث (الخطافات والمرشحات – Events and Filters) والبرمجة الكائنية (Object-Oriented Programming). في الأساس، الإضافة عبارة عن ملف أو ملفات PHP تتفاعل مع النسخة الأساسية من ووردبريس من خلال واجهات محددة مسبقًا، مما يسمح بإضافة ميزات جديدة بشكل آمن.
قبل البدء في التطوير، تحتاج إلى بيئة خادم محلية مستقرة أو بيئة اختبار. ننصح بشدة بتثبيت برامج خادم محلية مثل XAMPP أو Local by Flywheel أو DevKinsta. بالإضافة إلى ذلك، تأكد من أن لديك محرر كود (مثل VS Code أو PhpStorm) وأن وضع التصحيح الخاص بـ WordPress مفعّل. هذه الخطوات ضرورية لضمان سير عملية التطوير بسلاسة.wp-config.phpتم تعيين بعض الثوابت في الملف:
define( ‘WP_DEBUG’, true );
define( ‘WP_DEBUG_LOG’, true );
define( ‘WP_DEBUG_DISPLAY’, false ); تفعيلWP_DEBUG_LOGبعد ذلك، سيتم تسجيل رسائل الخطأ./wp-content/debug.logفي الملف، هذا أمر بالغ الأهمية لتحديد المشكلات وحلها.
القراءة الموصى بها دليل متقدم لتطوير مواقع ووردبريس: من المبادئ الأساسية إلى الاحترافية، دورة عملية ومفيدة。
قم بإنشاء أول إضافة (plugin) خاصة بك.
إنشاء مكون إضافي يبدأ بـ/wp-content/plugins/قم بإنشاء مجلد خاص داخل المجلد الرئيسي، على سبيل المثال…my-first-pluginفي هذا المجلد، يجب عليك إنشاء ملف PHP رئيسي، وعادةً ما يكون اسم الملف مطابقًا لاسم المجلد نفسه، مثل…my-first-plugin.php。
كتابة معلومات رأس الإضافة (Plugin Header Information)
كل إضافة (plugin) لـ WordPress تحتاج إلى تعليق رأسي (header comment) قياسي، وهو ما يعتبر “بطاقة الهوية” التي تساعد WordPress على التعرف على الإضافة. يجب أن يكون هذا التعليق في بداية الملف الرئيسي للإضافة، ويتم كتابته وفقًا لتنسيق محدد. الأمر الأساسي هو…Plugin Nameالمعلومات الأخرى مثل الوصف، الإصدار، المؤلف، وما إلى ذلك أيضًا مهمة للغاية.
<?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) داخل واجهة ووردبريس الخلفية، وسيعرض المعلومات المذكورة أعلاه.Text DomainوDomain Pathهذا مُعد لترجمة الإضافات (البرامج الإضافية) إلى لغات أخرى.
تنفيذ وظيفة أساسية
الآن، دعونا نضيف ميزة بسيطة للإضافة: إضافة نص مخصص تلقائيًا في نهاية محتوى المقال. سيتطلب ذلك استخدام “الفلاتر” (Filters) في ووردبريس. تسمح الفلاتر بتعديل البيانات قبل حفظها في قاعدة البيانات أو عرضها في المتصفح.
سنستخدم…the_contentهذا المرشح… في ملف الإضافة الرئيسي الخاص بك، بعد التعليقات في البداية، أضف الكود التالي:
القراءة الموصى بها الدليل النهائي لتطوير إضافات ووردبريس: من الصفر إلى بناء إضافتك الأولى。
// 在文章内容末尾添加自定义文本
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’ ); بعد حفظ الملف، قم بتسجيل الدخول إلى واجهة ووردبريس الخلفية (الواجهة الإدارية) لتفعيل هذا الإضافة. عندما تقوم بعرض مقالة فردية، ستلاحظ أن النص المضاف قد ظهر في نهاية المحتوى.myfp_add_text_to_contentهذه الدالة معرفة من قبلنا، وهي تقبل محتوى المقالة كمدخلات.$contentعند استيفاء الشروط (أن يكون المقال فرديًا، وأن يكون ضمن الحلقة الرئيسية)، يتم إضافة فقرة نصية إلى المحتوى، ثم يتم إرجاع المحتوى المعدل.add_filter()تقوم الدالة بتثبيت (أو تركيب) هذه الدالة المخصصة على النظام أو البيئة المستخدمة.the_contentعلى الفلتر.
استخدام الخطافات (hooks) والمرشحات (filters) لبناء تفاعلات (interactions)
تكمن قوة إضافات ووردبريس (WordPress Plugins) في نظام الأزرار (Hook System) الغني الذي يتكون من أزرار الإجراءات (Action Hooks) وأزرار المرشحات (Filter Hooks). تسمح أزرار الإجراءات بتنفيذ كود في أوقات محددة، بينما تسمح أزرار المرشحات بتعديل البيانات.
استخدم خطافات الأفعال (Action Hooks) لإضافة قائمة الإدارة.
لنفترض أننا نريد إضافة صفحة إعدادات للإضافة (plugin)، وهذا يتطلب استخدام "خطافات الإجراءات" (action hooks).admin_menuيتم تفعيله أثناء بناء قائمة إدارة واجهة ووردبريس الخلفية.
// 添加插件设置页面到后台菜单
function myfp_add_admin_menu() {
add_menu_page(
‘我的插件设置’, // 页面标题
‘我的插件’, // 菜单标题
‘manage_options’, // 权限要求
‘myfp-settings’, // 菜单slug
‘myfp_settings_page’, // 用于显示页面内容的回调函数
‘dashicons-admin-generic’, // 图标(可选)
80 // 菜单位置
);
}
add_action( ‘admin_menu’, ‘myfp_add_admin_menu’ );
// 定义设置页面的显示内容
function myfp_settings_page() {
?>
<div class="“wrap”">
<h1><?php esc_html_e( ‘我的插件设置’, ‘my-first-plugin’ ); ?></h1>
<p><?php esc_html_e( ‘这是你的第一个插件设置页面。’, ‘my-first-plugin’ ); ?></p>
<form method="“post”" action="/ar/“options.php”/" data-trp-original-action="“options.php”">
<?php
// 后续可以在这里添加设置字段
settings_fields( ‘myfp_settings_group’ );
do_settings_sections( ‘myfp-settings’ );
submit_button();
?>
<input type="hidden" name="trp-form-language" value="ar"/></form>
</div>
أنا لا أعرف ماذا أقول. بعد تفعيل الإضافة، سترى خيارًا جديدًا في القائمة يسمى “إضافاتي” في الجزء الأيسر من الشاشة الخلفية؛ يمكنك النقر عليه للدخول إلى صفحة الإعدادات الخاصة بها.add_menu_pageالدالة مهمة للغاية؛ فهي مسؤولة عن تسجيل صفحة القائمة الرئيسية.
إنشاء أكواد قصيرة لتحسين وظائف الصفحة
الرموز المختصرة (Shortcodes) هي أداة قوية تسمح للمستخدمين بتشغيل وظائف الإضافات (Plugins) بسهولة داخل المقالات أو الصفحات. يمكنك استخدامها…add_shortcode()استخدم الدالة لتسجيل رمز قصير.
// 创建一个显示当前时间的短代码
function myfp_current_time_shortcode( $atts ) {
// 使用 shortcode_atts 设置默认属性并合并用户输入
$attributes = shortcode_atts( array(
‘format’ => ‘Y-m-d H:i:s’,
), $atts );
// 根据属性格式化当前时间
$current_time = date( $attributes[‘format’] );
// 返回要显示的内容,确保进行转义
return ‘<p>الوقت الحالي هو: ’. esc_html($current_time).‘</p>’أضف شفرة قصيرة (‘show_time’) إلى ‘myfp_current_time_shortcode’.; الآن، يمكن للمستخدمين إدخال النصوص في محرر المقالات.[show_time format=“F j, Y”]يُستخدم لعرض التاريخ الحالي بشكل مُنسق. معالج الكود المختصر (Short Code Processor).myfp_current_time_shortcodeتتلقى مصفوفة من الخصائص، وتعيد محتوى HTML الذي يجب إدراجه في الصفحة.
القراءة الموصى بها تطوير إضافات ووردبريس: دليل شامل من المبتدئين إلى المحترفين لإنشاء مواقع إلكترونية مخصصة。
أمان الإضافات وأفضل الممارسات
عند تطوير الإضافات (plugins)، يعتبر الأمان من العوامل الأساسية التي يجب أخذها في الاعتبار أولاً. قد يؤدي الكود غير الآمن إلى تعرض الموقع الإلكتروني للهجمات. من المهم جدًا اتباع أفضل الممارسات الموصى به
التحقق من صحة البيانات، تهريب القيم (escaping values)، وتنظيف البيانات (data cleaning)
جميع البيانات القادمة من المستخدمين أو المصادر الخارجية (مثل…)$_GET, $_POST, $_COOKIEكل هذه البيانات غير موثوقة. يجب معالجتها قبل استخدامها في استعلامات قواعد البيانات أو عرضها في المتصفح.
- عند عرض البيانات في المتصفح، يجب استخدام دوال التهريب (escaping functions) لضمان عرض البيانات بشكل نصي خالص ومنع هجمات XSS (Cross-Site Scripting). يوفر ووردبريس دوال تهريب مختلفة حسب السياق المستخدم.
esc_html()(يُستخدم داخل عناصر HTML)esc_attr()(يُستخدم داخل خصائص HTML)esc_url()(يُستخدم في عناوين المواقع الإلكترونية) وwp_kses_post()(يتم السماح بمرور علامات HTML الآمنة فقط). - عند التعامل مع قواعد البيانات، استخدم الجمل المعدة مسبقًا (Prepared Statements): لا تقم أبدًا بدمج المتغيرات مباشرة في استعلامات SQL. يجب استخدام الطرق المناسبة لإدخال قيم المتغيرات إلى الاستعلامات.
$wpdb->prepare()الطرق أو واجهات برمجة التطبيقات (APIs) الأكثر تقدمًا مثل…WP_Queryعلى سبيل المثال:
global $wpdb;
$user_id = 123;
$safe_query = $wpdb->prepare( “SELECT * FROM {$wpdb->prefix}posts WHERE post_author = %d”, $user_id );
$results = $wpdb->get_results( $safe_query ); هنا%dهذا مجرد مكان فارغ (placeholder)، لا يحتوي على أي نص أو بيانات حقيقية.$wpdb->prepare()سيتم التعامل مع الأمر بأمان.$user_idمتغيرات.
تنفيذ إعدادات الخيارات والأمان
عند إضافة خيارات تكوين قابلة للتعديل للإضافة (plugin settings)، يجب استخدام واجهة برمجة تطبيقات WordPress Settings API. فهي تتعامل تلقائيًا مع عمليات التحقق من صحة البيانات (Nonce validation)، وفحص الصلاحيات (permission checks)، وحفظ الإعدادات (option saving)، مما يسهل بشكل كبير عملية التأمين (security process).
أولاً، استخدم.register_setting()قم بتسجيل مجموعة خيارات الإعدادات، ثم استخدمها.add_settings_section()وadd_settings_field()لإضافة حقول، استخدم دالة الاستدعاء (callback function) لقائمة الإدارة التي تم إنشاؤها مسبقًا.myfp_settings_pageالمستدعى في الوسطsettings_fields( ‘myfp_settings_group’ )وdo_settings_sections( ‘myfp-settings’ )سيتم عرض جميع الحقول الأمنية الضرورية بالإضافة إلى منطقة إعدادات التسجيل. هذا أفضل بكثير من المعالجة اليدوية.$_POSTيجب أن تكون البيانات أكثر أمانًا وموثوقية بكثير.
الملخصات
لقد مررت بالخطوات الأساسية في تطوير الإضافات من تأليف تعليقات بسيطة في رأس الملف الخاص بالإضافة، إلى استخدام ميزات “الأفعال” (actions) و“خطافات المرشحات” (filter hooks) للتفاعل مع قلب نظام ووردبريس (WordPress core)، وصولاً إلى إنشاء أكواد مختصرة (shortcodes) وإدارة الصفحات المتعلقة بالإضافة. تذكّر دائمًا أن الأمان هو الأولوية القصوى؛ قم بالتحقق من البيانات بدقة، وتنفيذ عمليات التهريب (escaping) وتنقيتها بشكل صحيح، واستفد بشكل فعّال من أدوات الأمان المتاحة في ووردبريس مثل واجهة برمجة التطبيقات (Settings API). تطوير الإضافات عملية تتطلب التعلم المستمر؛ من خلال قراءة الكود الأساسي لووردبريس، والرجوع إلى الدليل الرسمي، والمشاركة في المجتمعات المتخصصة، ستتمكن من إنشاء إضافات قوية وآمنة ومحبوبة من قبل الم
الأسئلة الشائعة الأسئلة المتداولة
هل يجب أن يكون المطورون المتخصصون في إنشاء الإضافات (plugins) متمكنين تمامًا من لغة PHP؟
نعم، من الضروري امتلاك أساس متين في لغة PHP، حيث أن منصة WordPress مكتوبة بالفعل باستخدام هذه اللغة. يجب أن تفهم مفاهيم مثل صيغة PHP، الدوال، الكلاسات، ومساحات الأسماء (namespaces). بالإضافة إلى ذلك، سيكون لديك فائدة كبيرة إذا كان لديك معرفة أساسية بلغات HTML وCSS وJavaScript، والتي تساعد في تطوير واجهات المستخدم الأمامية (front-end interfaces).
كيف يمكنني تصحيح أخطاء كود الإضافة (البرنامج الإضافي) الخاص بي؟
أكثر الطرق فعالية هو تفعيل ما تم ذكره سابقًا.WP_DEBUG、WP_DEBUG_LOGوWP_DEBUG_DISPLAYبالإضافة إلى ذلك، يمكن استخدام…error_log()تقوم الدالة بكتابة معلومات التصحيح المخصصة في السجلات (اللوغات)، أو باستخدام أدوات تصحيح متخصصة مثل Xdebug بالتعاون مع محرر الكود الخاص بك لإجراء عمليات تصحيح خطوة بخطوة.
كيف يمكنني إضافة ترجمات للغات إلى إضافتي (البرنامج الإضافي)؟
أولاً، قم بتعيين الإعدادات بشكل صحيح في تعليقات رأس الإضافة (plugin header comments).Text Domain(مثل ‘my-first-plugin’) وDomain Path(مثل ‘/languages’). ثم، في جميع أماكن الكود التي تحتاج إلى ترجمة النصوص، استخدم شيئًا مشابهًا لذلك.__( ‘Hello World’, ‘my-first-plugin’ )أوesc_html_e( ‘Settings’, ‘my-first-plugin’ )وظيفة الترجمة… أخيرًا، استخدم أدوات مثل Poedit لإنشاء الملفات المترجمة..potملفات القوالب، ومن خلالها يتم إنشاء نسخ بلغات مختلفة..poو.moقم بترجمة الملف وضعه في المكان المحدد./languagesتحت القائمة.
كيف يمكن نشر الإضافات (plugins) التي تم تطويرها في الدليل الرسمي لـ WordPress؟
تحتاج إلى الوصول إلى صفحة تقديم الإضافات الرسمية لموقع ووردبريس. قبل التقديم، تأكد من أن الكود يتبع معايير ترميز ووردبريس، وأنه يحتوي على وثائق وتعليقات شاملة، وأنه لا يحتوي على أي مشاكل تتعلق بحقوق الملكية لمكتبات تجارية طرف ثالث. بعد التقديم، سيتم إجراء عملية مراجعة، وبعد الموافقة عليها، سيصبح بإمكان المستخدمين حول العالم البحث عن إضافتك وتثبيتها.
ما التالي، ما التالي؟
القراءة الموسعة والمعرفة العملية
فيما يلي بعض الموضوعات ذات الصلة بموضوع هذه المقالة وهي مناسبة لمزيد من القراءة المتعمقة. وغالباً ما يكون من الأفضل إعطاء الأولوية للبدء بالمقال الأقرب إلى مشكلتك الحالية ثم التوسع تدريجياً إلى المواضيع المحيطة.
- دليل أساسي لتعلم ووردبريس: بناء موقعك المهني الأول من الصفر
- حل شامل لبناء المواقع الإلكترونية: دليل تنفيذي كامل من البداية حتى الإطلاق
- مقدمة: لماذا اختيار استخدام ووردبريس (WordPress) للتطوير؟
- دليل نهائي لبناء المواقع الإلكترونية: العملية الكاملة لإنشاء موقع إلكتروني محترف من الصفر
- كيفية اختيار وتخصيص تصميم ووردبريس المثالي الذي يناسب احتياجاتك؟