الهيكل الأساسي وآلية عمل إضافات ووردبريس (WordPress Plugins)
لتطوير إضافة (plugin) لووردبريس (WordPress)، من الضروري أولاً فهم المكونات الأساسية لووردبريس وكيفية عملها طوال دورة حياته. في الأساس، الإضافة عبارة عن ملف أو ملفات PHP تستخدم واجهات برمجة التطبيقات (APIs) الوفيرة المتاحة في ووردبريس لتوسيع أو تعديل وظائف الموقع الإلكتروني.
الأساس الذي يقوم عليه أي إضافة (plugin) هو معلومات رأس الإضافة (plugin header information)، والتي توضع في بداية ملف الإضافة الرئيسي. تُكتب هذه المعلومات بتنسيق تعليقات PHP محدد، وتُستخدم لإخبار نظام ووردبريس (WordPress) باسم الإضافة ووصفها وإصدارها ومؤلفها وغيرها من البيانات الوصفية (metadata). على سبيل المثال، إضافة تُسمى my-first-plugin.php قد تبدأ ملفات بالمعلومات التالية:
<?php
/**
* Plugin Name: 我的第一个插件
* Plugin URI: https://example.com/my-first-plugin
* Description: 这是一个用于学习插件开发的简单示例。
* Version: 1.0.0
* Author: 开发者姓名
* License: GPL v2 or later
* Text Domain: my-first-plugin
*/ يتفاعل ووردبريس مع الإضافات (Plugins) من خلال آلية تُسمى “الخطافات” (Hooks). تنقسم الخطافات إلى نوعين: الخطافات الفعلية (Action Hooks) والخطافات الفلترة (Filter Hooks). تسمح الخطافات الفعلية بإدخال كودك الخاص في نقاط زمنية محددة أثناء تنفيذ ووردبريس، مثل بعد نشر مقالة أو أثناء تحميل الأنماط في الجزء العلوي من الصفحة. أما الخطافات الفلترة فتسمح لك بتعديل البيانات التي ينتجها ووردبريس أثناء تنفيذه، مثل تعديل محتوى المقالات أو تغيير طول الملخصات. فهم واستخدام الخطافات بشكل ماهر أمر أساسي لتطوير إضافات فعالة وكفؤة.
القراءة الموصى بها دليل شامل وسهل الفهم لتعلم تطوير إضافات ووردبريس من الصفر。
فهم تنظيم ملفات الإضافات (plugins)
يمكن أن يحتوي البرنامج المكون (plugin) البسيط على ملف رئيسي واحد فقط. ولكن مع زيادة الوظائف، يصبح تنظيم الملفات بشكل منطقي أمرًا بالغ الأهمية. عادةً ما يتضمن دليل الملفات الخاص بالبرنامج المكون الكامل المل my-plugin.php)، المستخدم لاحتواء الدوال والفئات (classes). includes مجلدات، مخصصة لتخزين موارد الواجهة الأمامية (الفرينت إند). assets مجلد (يحتوي على ملفات CSS، JavaScript، وصور)، مخصص لملفات الترجمة. languages مجلدات، بالإضافة إلى تلك المستخدمة في قوالب واجهات المستخدم (User Interface Templates). templates مجلدات. هذا النوع من الهياكل المعيارية يساعد في صيانة الكود وتعزيز التعاون بين أعضاء الفريق.
قم بإنشاء أول إضافة (plugin) بسيطة الخاصة بك.
دعونا نبدأ من خلال مثال عملي. سنقوم بإنشاء إضافة (plugin) تقوم تلقائيًا بإضافة بيان حقوق النشر المخصص في نهاية محتوى جميع المقالات والصفحات على الموقع.
أولاً، يجب عليك الوصول إلى مجلد تثبيت WordPress. wp-content/plugins داخل المجلد، قم بإنشاء مجلد جديد وأطلق عليه الاسم التالي: my-copyright-noticeثم، قم بإنشاء ملف PHP رئيسي داخل هذا المجلد، ويمكن أن يكون اسمه على سبيل المثال: my-copyright-notice.php。
إضافة ميزة تنفيذ المحتوى
سنستخدم خطافات التصفية (filter hooks). the_content لتنفيذ هذه الميزة، قم بفتح الملف الرئيسي، أضف أولاً معلومات رأس الإضافة (plugin header)، ثم اكتب الدوال الأساسية (core functions).
<?php
/**
* Plugin Name: 自动版权声明
* Description: 在文章和页面内容末尾自动添加版权信息。
* Version: 1.0
* Author: WordPress 学习者
*/
// 防止直接访问文件
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* 在内容末尾添加版权声明的函数
*
* @param string $content 原始的文章内容。
* @return string 添加了版权声明后的内容。
*/
function mycn_add_copyright_to_content( $content ) {
// 仅对主循环内的文章和页面生效
if ( is_single() || is_page() ) {
$copyright_text = '<p><em>© حقوق النشر: هذا المحتوى ملك لهذا الموقع الإلكتروني، ولا يجوز إعادة نشره دون إذن.</em></p>';
$content .= $copyright_text;
}
return $content;
}
// 将函数挂载到 ‘the_content’ 过滤器上
add_filter( 'the_content', 'mycn_add_copyright_to_content' ); بعد حفظ الملف، قم بتسجيل الدخول إلى واجهة خلفية WordPress الخاصة بك، ثم اذهب إلى صفحة “الإضافات” (Plugins). يجب أن ترى إضافة “إعلان حقوق النشر التلقائي” (Automatic Copyright Statement) هناك. بعد تفعيلها، عند مراجعة أي مقال أو صفحة، سيظهر نص حقوق النشر الذي حددته في أسفل المحتوى. على الرغم من بساطة هذا المثال، إلا أنه يوضح بشكل كامل العملية بأكملها: من إنشاء الإضافة وبرمجتها إلى تفعيلها.
القراءة الموصى بها إتقان تطوير إضافات ووردبريس من الصفر: المبادئ، التطبيق العملي، والمهارات المتقدمة。
التفاعل مع قاعدة البيانات باستخدام واجهة برمجة التطبيقات (API) في ووردبريس
عادةً ما تحتاج الإضافات المتقدمة إلى تخزين البيانات واسترجاعها. يوفر ووردبريس فئات مريحة للغاية للتعامل مع قواعد البيانات. wpdb وتوفر واجهة برمجة التطبيقات (API) الخيارات، مما يتيح لك التعامل مع قاعدة البيانات بأمان دون الحاجة إلى كتابة عبارات SQL مباشرة.
بالنسبة لبيانات الأزواج المفتاح-القيمة البسيطة، مثل إعدادات الإضافات (plugins)، يُنصح بشدة باستخدام واجهة برمجة التطبيقات (API) المخصصة للخيارات (option API). يمكنك استخدامها لإدارة هذه البيانات بسهول add_option(), get_option(), update_option() و delete_option() تُستخدم دوال مثل هذه لإدارة البيانات. تقوم هذه الدوال تلقائيًا بمعالجة ترميز البيانات (تنسيقها) وتخزينها في النظام. wp_options في الجدول.
إنشاء جداول قاعدة بيانات مخصصة
عند الحاجة إلى تخزين بيانات مُنظمة ومعقدة (مثل الطلبات أو سجلات تقديم النماذج)، قد تحتاج إلى إنشاء جداول قاعدة بيانات مخصصة. عادةً ما يتم ذلك عند تفعيل إضافة (plugin) معينة. لتحقيق ذلك، يجب عليك كتابة دالة وتسجيلها في نظام إدارة ق register_activation_hook على هذا الخطاف الخاص.
يمكن أن يحتوي الملف الرئيسي للإضافة الخاصة بك على كود مشابه لما يلي:
/**
* 插件激活时创建自定义数据库表
*/
function myplugin_create_custom_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'myplugin_data'; // 获取带前缀的表名,如 wp_myplugin_data
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE IF NOT EXISTS $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
user_id int NOT NULL,
data_value text NOT NULL,
created_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
// 引入 WordPress 升级所需的文件
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
}
// 注册激活钩子
register_activation_hook( __FILE__, 'myplugin_create_custom_table' ); dbDelta() الدوال (Functions) هي أدوات قوية في ووردبريس (WordPress) تُستخدم لإنشاء أو تحديث جداول قواعد البيانات. تقوم هذه الدوال بمقارنة هيكل الجدول الحالي مع كود SQL الخاص بك، وتقوم فقط بإجراء التغييرات الضرورية. لاحظ ذلك…dbDelta() متحسس للغاية تجاه تنسيق جمل SQL (مثل تعريفات الأسطر الرئيسية، وطريقة الاستبعاد).
بناء واجهة لإدارة الإضافات (البرامج الإضافية) وتطبيق ممارسات الأمان المناسبة
عادةً ما يحتاج الإضافة المهنية إلى صفحة تكوين في الخلفية تسمح للمستخدمين بتعديل الإعدادات. يمكنك استخدام “واجهة برمجة التطبيقات (API) للإعدادات” في ووردبريس (WordPress Settings API) لإنشاء هذه الصفحة بشكل منظم وآمن، حيث تتولى هذه الواجهة مهمة التحقق من النماذج (form validation)، وإدارة الحقول الآمنة (مثل متغيرات nonce)، وتخزين الإعدادات، مما يسهل بشكل كبير عملية التطوير
القراءة الموصى بها قوالب ووردبريس المخصصة: دليل شامل لإنشاء مظهر موقعك الخاص من الصفر。
صفحة إعدادات إضافة الإضافات
أولاً، يجب عليك استخدام… add_action() الدالة تقوم بتثبيت شيء ما (مثل ملف أو مكتبة) في مكان معين. admin_menu دالة الاستدعاء الخاصة بخطاف الإجراء (action hook) تُستخدم لإضافة عنصر قائمة وصفحة جديدة. بعد ذلك، داخل دالة الاستدعاء الخاصة بهذه الصفحة، يتم استخدام دالات واجهة برمجة التطبيقات (APIs) لإنشاء ن
فيما يلي مثال مبسط يوضح كيفية إضافة صفحة قائمة رئيسية وتسجيل حقل إعدادات:
/**
* 添加插件设置菜单
*/
function myplugin_add_admin_menu() {
add_menu_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 所需权限
'myplugin-settings', // 菜单 slug
'myplugin_settings_page', // 显示设置页面的回调函数
'dashicons-admin-generic', // 图标
80 // 菜单位置
);
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );
/**
* 初始化插件设置
*/
function myplugin_settings_init() {
// 注册一个新的设置到 “myplugin_settings” 页面
register_setting( ‘myplugin_settings’, ‘myplugin_options’ );
// 在页面中添加一个区域
add_settings_section(
‘myplugin_section’,
‘主要设置’,
null, // 可选的区域描述回调函数
‘myplugin_settings’
);
// 向区域中添加一个字段
add_settings_field(
‘api_key’,
‘API 密钥’,
‘myplugin_api_key_field_callback’, // 渲染字段 HTML 的回调函数
‘myplugin_settings’,
‘myplugin_section’
);
}
add_action( ‘admin_init’, ‘myplugin_settings_init’ );
/**
* 渲染 API 密钥字段
*/
function myplugin_api_key_field_callback() {
$options = get_option( ‘myplugin_options’ );
?>
<input type="‘text’" name="‘myplugin_options[api_key]’" value="‘NO NUMERIC NOISE KEY" 1003’>
<?php
}
/**
* 设置页面的显示内容
*/
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’ ); // 输出安全字段
do_settings_sections( ‘myplugin_settings’ ); // 输出设置区域和字段
submit_button( ‘保存设置’ );
?>
<input type="hidden" name="trp-form-language" value="ar"/></form>
</div>
أنا لا أعرف ماذا أقول. الالتزام بمعايير أمان ووردبريس (WordPress Security Standards)
الأمان هو الأولوية القصوى في تطوير الإضافات (البرامج الإضافية لموقع ووردبريس). يجب معالجة جميع المدخلات والمخرجات القادمة من المستخدمين بشكل صحيح. يوفر ووردبريس مجموعة من الدوال (الوظائف البرمجية)
* 转义输出:使用 esc_html(), esc_attr(), esc_url() و wp_kses_post() استخدم دوال مثل هذه لضمان أن البيانات المعروضة على الصفحة آمنة.
* 验证和清理输入:在处理表单提交的数据前,使用 sanitize_text_field(), intval(), sanitize_email() 等函数进行清理。
* Nonce 验证:对于所有涉及状态更改的操作(如表单提交、AJAX 请求),使用 wp_nonce_field(), wp_create_nonce() و wp_verify_nonce() لمنع هجمات تزوير الطلبات بين المواقع (Cross-Site Request Forgery – CSRF).
* 能力检查:使用 current_user_can() دالة للتحقق مما إذا كان لدى المستخدم الحالي الصلاحية لتنفيذ عملية معينة (مثل…) ‘edit_posts’, ‘manage_options’)。
الملخصات
تطوير إضافات ووردبريس (WordPress plugins) هو عملية منهجية تبدأ بفهم الهيكل الأساسي للنظام (مثل الأدوات المساعدة ومعلومات الرأس الخاصة بالصفحة)، ثم تتطور تدريجياً نحو تنفيذ الوظائف المطلوبة، وإدارة البيانات، وبناء واجهات المستخدم، وتعزيز الأمان. يمكن للمطورين أن يبدأوا بإنشاء إضافات بسيطة مثل إضافات إعلانات حقوق النشر (copyright notices)، مما يساعدهم على فهم سير عملية تطوير الإضافات بشكل سريع وواضح. بع wpdb إجراء عمليات معالجة البيانات على الكلاسات (classes) هو خطوة ضرورية لتخزين المعلومات المعقدة. وأخيرًا، استخدام واجهات برمجة التطبيقات (APIs) المناسبة لبناء واجهات خلفية سهلة الاستخدام، مع الالتزام الصارم بمعايير الترميز الأمني الخاصة بووردبريس (WordPress)، هو مفتاح لضمان أن يكون الإضافة (plugin) محترفة وموثوقة ومقبولة على نطاق واسع. الممارسة المستمرة، بالإضافة إلى قراءة الكود الأساسي ومصادر الإضافات الممتازة الأخرى،
الأسئلة الشائعة الأسئلة المتداولة
ما هي الحد الأدنى لعدد الملفات المطلوبة لإضافة (plugin) في ووردبريس (WordPress)؟
يمكن أن يحتوي إضافة ووردبريس (WordPress plugin) كاملة الوظائف على ملف PHP واحد فقط. طالما أن هذا الملف يحتوي على التعليقات الخاصة برأس الإضافة (plugin header comments) بشكل صحيح ويقوم بتنفيذ الميزات المطلوبة، فإن ووردبريس سيتعرف عليه ويقوم بتفعيله. أما بالنسبة للإضافات المعقدة، فيُنصح بتقسيمها إلى عدة ملفات ومجلدات من أجل سهولة الصيانة.
كيف يمكن جعل الإضافات تدعم الترجمة إلى لغات متعددة؟
يستخدم WordPress تقنية GNU gettext لتحقيق التدويل (i18n). يجب عليك القيام بالخطوات التالية: أولاً، في بداية كل إضافة (plugin) وفي جميع النصوص التي تحتاج إلى ترجمة، استخدم أدوات مثل… __(‘文本’, ‘your-text-domain’) أو _e(‘文本’, ‘your-text-domain’) يتم تغليف مثل هذه الدوال، ثم استخدام أدوات مثل Poedit لإنشاء ملفات قوالب .pot، بالإضافة إلى إنشاء ملفات .po و .mo الخاصة باللغة المطلوبة. zh_CN.poوأخيرًا، من خلال… load_plugin_textdomain() يتم تحميل ملفات الترجمة عند تهيئة الإضافة (البرنامج الإضافي).
كيف يجب تحميل ملفات JavaScript وCSS الموجودة داخل الإضافات (plugins) بشكل صحيح؟
لضمان التوافق وتجنب حدوث تعارضات، لا ينبغي ربط ملفات الموارد مباشرةً في HTML. بالنسبة لموارد الواجهة الأمامية (front-end resources)، يجب استخدام… wp_enqueue_script() و wp_enqueue_style() الوظائف، وتثبيتها على wp_enqueue_scripts على خطوط الأوامر (action hooks). بالنسبة لموارد صفحة مدير الخادم الخلفي (backend administrator page)، يجب تثبيتها هناك. admin_enqueue_scripts موجودة على الخطاف (hook). تسمح لك هذه الدوال بتحديد المعتمدات (dependencies) وأرقام الإصدارات (version numbers)، وتضمن أن نفس الموارد لا يتم تحميلها إلا مرة واحدة فقط.
كيف يمكن إجراء التصحيحات (التدقيق والتعديلات) أثناء تطوير الإضافات (البرامج الإضافية)؟
يوفر ووردبريس أدوات تصحيح أخطاء (debugging tools) قوية للغاية. أولاً، فيما يتعلق بموقع الويب… wp-config.php في الملف، سيتم… WP_DEBUG تم تعيين الثابت على قيمة trueسيتم عرض أخطاء PHP وتحذيراتها وإشعاراتها مباشرة على الصفحة. كما يمكنك تفعيل كل هذه الميزات في نفس الوقت. WP_DEBUG_LOG(يتم تسجيل سجلات الأخطاء في…) wp-content/debug.log (الملفات) و WP_DEBUG_DISPLAY(للتحكم في ما إذا كان سيتم عرض شيء ما على الصفحة أم لا). بالإضافة إلى ذلك، استخدم… error_log() كتابة السجلات (اللوغات) في ملفات مخصصة من خلال الدوال هي أيضًا طريقة فعالة لتتبع المتغيرات والعمليات التي تتم تنفيذها.
ما التالي، ما التالي؟
القراءة الموسعة والمعرفة العملية
فيما يلي بعض الموضوعات ذات الصلة بموضوع هذه المقالة وهي مناسبة لمزيد من القراءة المتعمقة. وغالباً ما يكون من الأفضل إعطاء الأولوية للبدء بالمقال الأقرب إلى مشكلتك الحالية ثم التوسع تدريجياً إلى المواضيع المحيطة.
- كيفية اختيار وتخصيص تصميم ووردبريس المثالي الذي يناسب احتياجاتك؟
- دليل تطوير إضافات ووردبريس: كيف تبني إضافتك المخصصة الأولى من الصفر
- كيف تصبح مطورًا لإضافات ووردبريس: دليل شامل من الصفر إلى النهاية
- من الصفر إلى الواحد: دليل شامل وخطوات عملية لبناء مواقع إلكترونية مهنية باستخدام WordPress
- دليل شامل لتطوير إضافات ووردبريس: من المبتدئين إلى الخبراء في إنشاء إضافات متخصصة