البدء من الصفر: إتقان الخطوات الأساسية وأفضل الممارسات في تطوير إضافات ووردبريس (WordPress Plugins)
تطوير إضافات (Plugins) لووردبريس (WordPress) يعد وسيلة قوية لتوسيع إمكانيات مواقع ووردبريس. من خلال إنشاء إضافات مخصصة، يمكن للمطورين إضافة ميزات فريدة إلى الموقع دون الحاجة إلى تعديل الكود الأساسي لووردبريس نفسه. هذا لا يزيد فقط من مرونة الموقع، بل يضمن أيضًا أن تعمل الميزات المخصصة بشكل آمن ومستقر مع تحديثات ووردبريس الرسمية. إضافة ووردبريس المصممة بشكل جيد تتبع هيكل مجلدات معين، معايير ترميز محددة، وواجهة برمجة التطبيقات (API) الخاصة بووردبريس.
سيقوم هذا المقال بمرافقتك خلال الرحلة الكاملة من إنشاء أول ملف إضافة (plugin) إلى نشرها بشكل آمن، وسيغطي المفاهيم الأساسية والأدوات وأفضل الممارسات التي يجب أن تعرفها أثناء عملية التطوير.
القراءة الموصى بها دليل شامل لتطوير إضافات ووردبريس: كيفية بناء وظائف إضافية عالية الجودة لووردبريس من الصفر。
بيئة التطوير والهيكل الأساسي
قبل كتابة أي كود، من الضروري جدًا إنشاء بيئة تطوير مناسبة. يُنصح باستخدام أدوات التطوير المحلية مثل Local by Flywheel أو XAMPP أو MAMP، والتي يمكنها تهيئة بيئة تحتوي على PHP وMySQL وخادم ويب بسرعة. بالإضافة إلى ذلك، فإن محرر الكود (مثل VS Code أو PhpStorm) وأدوات التصحيح (مثل Query Monitor أو Debug Bar) أمران أساسيان أيضًا.
قم بإنشاء ملف الإضافة (plugin) الخاص بك الأول.
أبسط شكل لإضافة (plugin) في ووردبريس (WordPress) هو ملف يقع في المسار المحدد للإضافات في الموقع. /wp-content/plugins/ ملفات PHP الموجودة في المجلد. يجب أن تحتوي الرأس (header) للملف الرئيسي للإضافة (plugin) على تعليقات تحتوي على معلومات قياسية عن الإضافة، وهذا أساس يعتمد عليه ووردبريس (WordPress) للتعرف على الإضافات وإدار
قم بإنشاء شيء يُسمى… my-first-plugin.php ملف، وأدخل المحتوى التالي:
<?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
*/ قم بحفظ هذا الملف في: /wp-content/plugins/my-first-plugin/ داخل المجلد، ثم قم بتسجيل الدخول إلى واجهة خلفية WordPress عبر صفحة “الإضافات” (Plugins)، وستتمكن من رؤية هذه الإضافة وتفعيلها. على الرغم من أنها لا تحتوي على أي وظائف في الوقت الحالي، إلا أن هيكلها قد تم إنشاؤه بالفعل
دليل المكونات الإضافية وتنظيم الملفات
مع زيادة الوظائف، يصبح من الصعب الحفاظ على ملف واحد. عادةً ما يتضمن دليل الإضافات (plugins) ذو الهيكل الجيد الأجزاء التالية:
* 主插件文件:plugin-name.php
* includes/ الدليل: يحتوي على ملفات الكلاسات أو الدوال الأساسية.
* admin/ المحتويات: يحتوي على الكود المتعلق بالواجهة الخلفية (الباك إند)، بالإضافة إلى ملفات CSS و JavaScript.
* public/ المحتويات: يحتوي على الكود المتعلق بواجهة المستخدم الأمامية، بالإضافة إلى ملفات CSS وJavaScript.
* assets/ المجلد: يحتوي على الصور وملفات أنماط (style sheets) وملفات البرمجيات (scripts).
* languages/ المجلد: يحتوي على ملفات الترجمة الدولية (التي تنتهي بامتدادات .pot، .po، .mo).
* uninstall.php الملف: خيارات تُستخدم لتنظيف قاعدة البيانات عندما يتم حذف الإضافة (البرنامج الإضافي).
القراءة الموصى بها الدليل الكامل لتطوير إضافات ووردبريس: من المبتدئين إلى الشرح العملي المتعمق。
المفاهيم والتقنيات الأساسية للتطوير
جوهر تطوير إضافات ووردبريس (WordPress Plugins) يكمن في فهم واستخدام واجهات برمجة التطبيقات (APIs) المتاحة في ووردبريس بشكل ماهر، والتي تشمل أساسًا خطافات الإجراءات (Action Hooks)، وخطافات المرشحات (Filter Hooks)، والكود المختصر (Shortcodes).
إتقان استخدام خطافات الأفعال (Action Hooks)
تسمح خيوط الأفعال (Action Hooks) بإدراج كودك الخاص في نقاط زمنية محددة أثناء تشغيل ووردبريس. استخدمها بشكل فعال لتنفيذ المهام المطلوبة تلقائيًا أو لتعديل سلوك ووردبريس بطريقة مخصصة. add_action() يمكن للدوال أن تقوم بتثبيت الدوال المخصصة الخاصة بك على "خطاف" (hook) معين.
على سبيل المثال، الكود أدناه يضيف علامة meta مخصصة في الجزء العلوي من جميع الصفحات:
function myplugin_add_custom_meta() {
echo '<meta name="my-custom-meta" content="value">';
}
add_action( 'wp_head', 'myplugin_add_custom_meta' ); مثال آخر شائع هو تنفيذ بعض العمليات الأولية عند تفعيل الإضافة (البرنامج الإضافي)، مثل إنشاء جداول في قاعدة البيانات. ولتحقيق ذلك، يلزم تثبيت (منصب) الدالة المعنية بشكل مناسب في النظام. register_activation_hook على الخطاف.
استخدام المرشحات لتعديل المحتوى
تُستخدم “خطافات المرشحات” (Filter Hooks) لتعديل البيانات أثناء معالجتها في ووردبريس. يمكنك استخدامها لإجراء تغييرات على البيانات قبل أو بعد أن تتم معالجتها بواسطة ووردبريس. add_filter() تُستخدم الدوال لتغيير محتوى النصوص، قيم الخيارات، وغيرها. يجب أن تكون لدى دوال التصفية قيمة مرجعية (return value).
في المثال أدناه، يتم إضافة نص مخصص تلقائيًا في نهاية محتوى المقال:
القراءة الموصى بها الدليل الشامل لتطوير إضافات ووردبريس: من الصفر إلى بناء أول إضافة وظيفية لك。
function myplugin_modify_post_content( $content ) {
if ( is_single() ) {
$custom_text = '<p><em>شكرًا لقراءتك هذا المقال!</em></p>';
$content .= $custom_text;
}
return $content;
}
add_filter( 'the_content', 'myplugin_modify_post_content' ); إنشاء وإدارة الرموز المختصرة (Short Codes)
تتيح الرموز المختصرة للمستخدمين إدراج المحتوى الديناميكي الذي يتم إنشاؤه بواسطة الإضافات بسهولة في المقالات أو الصفحات أو الأدوات الصغيرة. add_shortcode() يمكن للدالة تسجيل رمز قصير جديد.
قم بتسجيل اسم يُدعى… [greeting] هذا الكود المختصر يمكنه عرض تحيات مختلفة حسب الوقت:
function myplugin_greeting_shortcode( $atts ) {
$hour = date( 'G' );
$greeting = ( $hour ? 'صباح الخير!' : ( ($hour) < 18 ) ? '下午好!' : '晚上好!' );
return '<div class="greeting">'`. esc_html($greeting).`'</div>'php
add_shortcode('greeting', 'myplugin_greeting_shortcode'); أمان الإضافات وإدارة البيانات
تطوير إضافة آمنة هو الخطوة الأولى لحماية موقع الويب وبيانات المستخدمين. ويشمل ذلك التحقق من صحة المدخلات، تهيئة البيانات المخرجة بشكل آمن، فحص الصلاحيات، بالإضافة إلى معالجة البيانات بطر
تنفيذ عمليات التحقق من صحة البيانات (Data Validation) وتهريب الرموز (Data Escaping)
لا تثق أبدًا في أي بيانات يقدمها المستخدمون. يجب التحقق من صحة هذه البيانات وتنفيذ عمليات التهريب (escaping) عليها قبل حفظها في قاعدة البيانات أو عرضها في المتصفح.
- التحقق: استخدام
sanitize_text_field(),sanitize_email(),intval()تقوم الدوال مثل هذه بتنظيف المدخلات من المستخدم. - التهريب (Escape): عند إخراج البيانات إلى HTML أو JavaScript أو URL، استخدم الدوال المناسبة للتهريب، مثل…
esc_html(),esc_js(),esc_url()。
على سبيل المثال، كيفية معالجة اسم المستخدم المقدم عبر نموذج بطريقة آمنة وعرضه:
$user_input = $_POST['username'] ?? ''; // 使用空合并运算符提供默认值
$clean_username = sanitize_text_field( $user_input );
echo '你好,' . esc_html( $clean_username ); استخدام واجهة برمجة التطبيقات (API) لخيارات ووردبريس (WordPress Options API)
بالنسبة للإعدادات البسيطة التي تحتاج إلى التخزين (مثل المفاتيح الطرفية، النصوص، إلخ)، يجب استخدام واجهة برمجة التطبيقات (API) الخاصة بخيارات ووردبريس (WordPress Options API). فهي توفر الوسائل اللازمة لإدار add_option(), get_option(), update_option() و delete_option() وظائف مثل هذه تسمح بتخزين البيانات بشكل آمن. wp_options في الجدول.
قم بإنشاء إعدادات للإضافة (plugin settings) واحصل عليها.
// 保存一个选项
update_option( 'myplugin_setting_color', '#336699' );
// 获取一个选项,如果不存在则使用默认值
$color = get_option( 'myplugin_setting_color', '#000000' ); إنشاء جداول قاعدة بيانات مخصصة
عندما يحتاج الإضافة (plugin) إلى تخزين بيانات علاقية معقدة، قد يكون من الضروري إنشاء جداول قاعدة بيانات مخصصة. عادةً ما يتم ذلك أثناء تفعيل الإضافة، ويجب أن يتم الالتزام بقواعد نمط قاعدة بيانات ووردبريس (WordPress database schema).
في my-first-plugin.php في الكود المذكور، تم إضافة دالة لإنشاء جدول لتفعيل مخالب (hooks) الإضافات (plugins).
function myplugin_create_custom_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'myplugin_items'; // 使用 $wpdb->prefix 确保表前缀正确
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE IF NOT EXISTS $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
name varchar(100) NOT NULL,
created_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
}
register_activation_hook( __FILE__, 'myplugin_create_custom_table' ); بناء واجهة إدارة خلفية للمكوّنات الإضافية.
إن إنشاء صفحة إعدادات خلفية سهلة الاستخدام للوحدة الإضافية الخاصة بك يعتبر مفتاحًا لتقديم تجربة مستخدم ممتازة. يوفر ووردبريس مجموعة متنوعة من واجهات برمجة التطبيقات (APIs) لتسهيل عملية إنشاء القوائم الإدارية وصفحات الإعدادات وال
إضافة قائمة إدارية وقوائم فرعية
الاستفادة من add_menu_page() و add_submenu_page() يمكن للدوال أن تساعد في إضافة عناصر قائمة إلى شريط الجانب الخلفي لواجهة ووردبريس الخاصة بالإضافات الخاصة بك.
أضف الكود التالي لإضافة قائمة رئيسية باسم “ملفاتي” وقائمة فرعية باسم “الإعدادات”:
function myplugin_add_admin_menu() {
// 添加顶级菜单
add_menu_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 所需权限
'myplugin-dashboard', // 菜单 Slug
'myplugin_dashboard_page', // 回调函数,用于输出页面内容
'dashicons-admin-generic', // 图标
30 // 菜单位置
);
// 添加子菜单
add_submenu_page(
'myplugin-dashboard', // 父菜单 Slug
'插件设置', // 页面标题
'设置', // 菜单标题
'manage_options', // 权限
'myplugin-settings', // 子菜单 Slug
'myplugin_settings_page' // 回调函数
);
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );
// 定义“仪表盘”页面的回调函数
function myplugin_dashboard_page() {
echo '<div class="wrap"><h1>لوحة معلومات الإضافة الخاصة بي</h1></div>';
}
// 定义“设置”页面的回调函数
function myplugin_settings_page() {
echo '<div class="wrap"><h1>إعدادات الإضافة الخاصة بي</h1></div>';
} واجهة برمجة التطبيقات (API) لإعدادات الدمج – لبناء النماذج
توفر إعدادات ووردبريس لواجهة برمجة التطبيقات (API) طريقة آمنة وموحدة لإنشاء وتحقق من صحة وحفظ إعدادات النماذج. وتشمل هذه الإعدادات عمليات تسجيل الإعدادات، بالإضافة إلى إضافة مناطق وحقول الإعدادات.
فيما يلي مثال بسيط لإنشاء صفحة إعدادات تحتوي على حقل نصي:
function myplugin_settings_init() {
// 注册一个新的设置项 “myplugin_settings”
register_setting( 'myplugin_settings_group', 'myplugin_settings' );
// 添加一个新的设置区域
add_settings_section(
'myplugin_section_basic',
'基础设置',
null, // 区域描述的回调函数,这里不需要
'myplugin-settings' // 页面 Slug
);
// 在区域内添加一个字段
add_settings_field(
'myplugin_field_api_key',
'API 密钥',
'myplugin_field_api_key_callback', // 渲染字段 HTML 的回调函数
'myplugin-settings',
'myplugin_section_basic'
);
}
add_action( 'admin_init', 'myplugin_settings_init' );
// 字段的回调函数
function myplugin_field_api_key_callback() {
$options = get_option( 'myplugin_settings' );
$value = $options['api_key'] ?? '';
echo '<input type="text" name="myplugin_settings[api_key]" value="' . esc_attr( $value ) . '" class="regular-text">';
}
// 修改之前的设置页面回调函数,以输出表单
function myplugin_settings_page() {
?>
<div class="wrap">
<h1>إعدادات الإضافة الخاصة بي</h1>
<form action="/ar/options.php/" method="post" data-trp-original-action="options.php">
<?php
settings_fields( 'myplugin_settings_group' ); // 输出必要的安全字段
do_settings_sections( 'myplugin-settings' ); // 输出所有设置区域和字段
submit_button(); // 输出提交按钮
?>
<input type="hidden" name="trp-form-language" value="ar"/></form>
</div>
أنا لا أعرف ماذا أقول. الملخصات
تطوير إضافات ووردبريس (WordPress plugins) يبدأ بفهم الهيكل الأساسي لنظام ووردبريس، ثم التعمق تدريجياً في واجهات برمجة التطبيقات (APIs) الأساسية ومعايير الأمان، وأخيراً بناء واجهة مستخدم كاملة. المفتاح هو اتباع معايير الكود وأفضل الممارسات الخاصة بووردبريس، مثل استخدام الأدوات المتاحة بشكل صحيح (مثل “الهوكات” – hooks)، والتعامل الصارم مع أمن البيانات، واستغلال واجهات برمجة التطبيقات المدمجة لإدارة الإعدادات والبيانات. يبدأ العملية بإنشاء ملف تعليقات بسيط في رأس الإضافة، ثم إضافة الوظائف المختلفة (مثل الأفعال – actions والمرشحات – filters والكود المختصر – shortcodes)، ومن ثم إدارة قاعدة البيانات وواجهة الخلفية (الواجهة الإدارية). كل خطوة تُبنى على إطار عمل ووردبريس القوي والمستقر. من خلال التعلم المنهجي والممارسة المستمرة لهذه الخطوات، ستتمكن من تطوير إضافات ووردبريس ذات وظائف متنوعة وآمنة وموثوقة وسهلة الصيانة، وبالتالي المساهمة في النظام البيئي الضخم لووردبريس حول العالم.
الأسئلة الشائعة الأسئلة المتداولة
ما المعرفة الأساسية اللازمة لتطوير إضافات WordPress؟
لتطوير إضافات (Plugins) لمنصة ووردبريس (WordPress)، من الضروري إتقان لغة البرمجة PHP، حيث يتم كتابة الكود الأساسي للإضافات بلغة PHP. بالإضافة إلى ذلك، يجب أن يكون هناك فهم أساسي للغات HTML وCSS وJavaScript، وذلك لبناء واجهات المستخدم الأمامية وتحقيق التفاعلات بينها. والأهم من ذلك كله، يجب أن تكون على دراية تامة بالمفاهيم الأساسية لووردبريس، مثل أدوات التكامل (Actions وFilters)، والحلقات البرمجية (The Loop)، وهيكل القوالب (Templates)، بالإضافة إلى بنية قاعدة البيانات الخاصة بووردبريس.
كيف يمكنني تصحيح أخطاء مكوّن WordPress الخاص بي؟
أولاً، في… wp-config.php قم بتفعيل وضع التصحيح الخاص بووردبريس (WordPress Debug Mode) داخل الملف. WP_DEBUG تم تعيين الثابت على قيمة trueسيؤدي ذلك إلى عرض أخطاء وتحذيرات PHP على الشاشة. بالإضافة إلى ذلك، يمكن استخدام… error_log() تقوم الدالة بكتابة معلومات التصحيح إلى سجل الأخطاء على الخادم. بالإضافة إلى ذلك، فإن تثبيت إضافات تصحيح متخصصة مثل Query Monitor يمكن أن يوفر مراقبة فورية لتفاصيل عمليات الاستعلام على قاعدة البيانات، وتنفيذ الروابط (hooks)، وتحميل السكريبتات، وهي أدوات ضرورية لا غنى عنها أثناء عملية التطوير.
كيف يمكن لإضافتي (البرنامج الإضافي) أن تدعم عدة لغات (التدويل)؟
يستخدم WordPress إطار عمل GNU gettext لتحقيق التدويل (i18n). أولاً، في كود الإضافات (plugins)، يتم استخدام علامات خاصة لتحديد جميع النصوص التي تحتاج إلى ترجمة. () أو _e() قم بتغليف دوال الترجمة وقدمها بطريقة مناسبة. () تحدد الدالة نطاق النصوص (Text Domain) الذي يتم تعريفه في بداية المكون الإضافي (plugin). بعد ذلك، يتم استخدام أدوات مثل Poedit لمسح مصدر كود المكون الإضافي وإنشاء ما يلزم من ملفات. .pot ملفات القوالب، واستنادًا إليها يتم إنشاء نسخ بلغات مختلفة. .po والمُجمَع (المُترجم) بعد عملية التجميع (الترجمة). .mo الملف، قم بوضعه في المكون الإضافي (الإضافة). /languages/ في المجلد… وأخيرًا، استخدم… load_plugin_textdomain() تحميل الترجمة للوظيفة.
كيف يمكنني تقديم إضافتي إلى الدليل الرسمي للإضافات في ووردبريس (WordPress Plugin Directory)؟
قبل تقديم الإضافة إلى الدليل الرسمي، يجب التأكد من أنها تتوافق تمامًا مع معايير وإرشادات تطوير الإضافات الرسمية. يجب أن يكون لديك حساب على موقع WordPress.org، ثم قم بملء النموذج على صفحة تقديم الإضافة. سيقوم فريق المراجعة بفحص أمان الكود، وترخيص الإضافة (الذي يجب أن يكون متوافقًا مع GPL)، وجودة الكود، والوثائق، والتوافق مع نظام ووردبريس. بعد الموافقة، ستحصل على عنوان مستودع SVN، وبعد إرسال الكود عبر SVN، ستظهر الإضافة في الدليل الرسمي. قد يستغرق هذا العملية عدة أسابيع، وهناك معايير مفصلة للمراجعة.
ما التالي، ما التالي؟
القراءة الموسعة والمعرفة العملية
فيما يلي بعض الموضوعات ذات الصلة بموضوع هذه المقالة وهي مناسبة لمزيد من القراءة المتعمقة. وغالباً ما يكون من الأفضل إعطاء الأولوية للبدء بالمقال الأقرب إلى مشكلتك الحالية ثم التوسع تدريجياً إلى المواضيع المحيطة.
- لماذا يتم اختيار ووردبريس (WordPress) كمنصة أساسية لبناء المواقع الإلكترونية؟
- دليل أساسي لتعلم ووردبريس: بناء موقعك المهني الأول من الصفر
- حل شامل لبناء المواقع الإلكترونية: دليل تنفيذي كامل من البداية حتى الإطلاق
- مقدمة: لماذا اختيار استخدام ووردبريس (WordPress) للتطوير؟
- دليل نهائي لبناء المواقع الإلكترونية: العملية الكاملة لإنشاء موقع إلكتروني محترف من الصفر