إعداد بيئة تطوير المكوّنات الإضافيّة لـ WordPress.
قبل البدء في كتابة الكود، تحتاج إلى بيئة تطوير مناسبة. هذا لا يساعد فقط على تحسين كفاءة عملية التطوير الخاصة بك، بل يساعدك أيضًا على تصحيح الأخطاء واختبار الإضافات (البرامج الإضافية) بشكل أفضل. أولاً، يجب عليك إنشاء بيئة تشغيل لـ WordPress على جهاز الكمبيوتر الخاص بك. يمكنك استخدام بيئات تطوير متكاملة مثل XAMPP أو MAMP أو Local by Flywheel، والتي تسمح بتثبيت PHP وMySQL وخوادم Apache/Nginx بسرعة. بالنسبة لملفات قلب نظام WordPress (الكود الأساسي للنظام)، يُنصح بتنزيل أحدث إصدار مستقر من الموقع الرسمي وتثبيته.
تأكد من أن إصدار PHP الخاص بك يلبي الحد الأدنى من متطلبات ووردبريس، وقم بتفعيل خاصية تقارير الأخطاء (Error Reporting)، فهي ضرورية للغاية لعملية التصحيح والتطوير. يمكنك القيام بذلك من خلال الإعدادات الخاصةwp-config.phpأضف الكود التالي إلى الملف لتفعيل وضع التصحيح (التصحيح التدريجي):
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true); // 将错误记录到 /wp-content/debug.log
define('WP_DEBUG_DISPLAY', false); // 不在页面上显示错误 بالإضافة إلى ذلك، من الضروري وجود محرر كود قوي مثل Visual Studio Code، أو PhpStorm، أو Sublime Text. توفر هذه المحررات عادةً تمييزًا للغة البرمجية، واقتراحات أثناء كتابة الكود، وتكاملًا مع أدوات إدارة الإصدارات (Version Control)، مما يحسن بشكل كبير تجربة البرمجة. أخيرًا، يُنصح بتثبيت أدوات المطورين (Developer Tools) في المتصفح، والنظر في استخدام إضافات متخصصة تم تطويرها لموقع ووردبريس (WordPress) لتسهيل فحص الروابط (Hooks)، واستعلام قواعد البيانات (Database Queries)، ومراقبة أداء الموقع.
القراءة الموصى بها دليل تعليمي لتطوير الإضافات في ووردبريس: إنشاء أول وحدة وظيفية لديك من الصفر إلى واحد.。
قم بإنشاء ملف الإضافة (plugin) الخاص بك الأول.
أبسط شكل لإضافة (plugin) في ووردبريس (WordPress) هو ملف PHP. تُخزن جميع الإضافات في مكان معين داخل نظام ووردبريس./wp-content/plugins/داخل المجلد، يمكن أن يكون كل إضافة (plugin) ملف PHP مستقل، أو مجلد يحتوي على عدة ملفات.
أولاً، قم بإنشاء مجلد فريد لاستخدامه لاحتواء إضافتك (البرنامج الإضافي)، على سبيل المثال:my-first-pluginداخل هذا المجلد، قم بإنشاء ملف الإضافة الرئيسية، وعادة ما يتم تسميته بنفس اسم المجلد.my-first-plugin.phpيجب أن يحتوي بداية هذا الملف على تعليق رأس الإضافة (plugin header comment) الذي يتوافق مع معايير ووردبريس، والذي يقدم معلومات أساسية عن الإضافة إلى نظام ووردبريس.
مثال على تعليقات الرأس في ملف الإضافة الرئيسية:
<?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
*/ الحقل “اسم الإضافة” (Plugin Name) في هذه الملاحظة إلزامي، وهو ما يحدد الاسم الذي سيظهر به الإضافة في واجهة الإدارة الخلفية. المعلومات الأخرى مثل الإصدار والمؤلف تساعد المستخدمين على فهم الإضافة بشكل أفضل. بعد إنشاء هذا الملف، قم بوضعه في المكان المناسب./wp-content/plugins/my-first-plugin/محتويات. في هذه المرحلة، قم بتسجيل الدخول إلى لوحة تحكم WordPress الخاصة بك، وانتقل إلى صفحة “الإضافات”، ويجب أن تتمكن من رؤية إضافة جديدة باسم “My First Custom Plugin” ويمكنك تفعيلها. على الرغم من أنها لا تفعل أي شيء حاليًا، إلا أنك قد أنشأت بنية أساسية للإضافة بنجاح.
معالجة تفعيل وتعطيل الإضافات (Plugins)
عند تفعيل أو تعطيل الإضافات (Plugins)، غالبًا ما يكون من الضروري تنفيذ بعض العمليات الأولية والتنظيفية، مثل إنشاء جداول في قاعدة البيانات، تعيين الخيارات الافتراضية، أو إزالة البيانات المؤقتة. يقوم ووردبريس (WordPress) بإدارة هذه العمليات من خلال حلقتين خاصتين (Hooks).register_activation_hookوregister_deactivation_hook。
القراءة الموصى بها من المبتدئين إلى الخبراء: دليل كامل لتطوير الإضافات في ووردبريس وأفضل الممارسات.。
يمكنك تعريف هذه “الخطافات” (hooks) داخل ملف الإضافة الرئيسي. على سبيل المثال، عند تفعيل الإضافة، قد نرغب في كتابة خيار تكوين افتراضي في قاعدة البيانات؛ وعند تعطيل الإضافة، قد نحتاج إلى مسح هذا الخيار. يمكن تنفيذ الكود كما يلي:
// 定义插件激活时执行的函数
function my_plugin_activate() {
// 添加一个默认选项到数据库
add_option('my_plugin_default_option', '这是默认值');
// 或者可以在这里初始化自定义数据库表(需要更复杂的SQL)
}
register_activation_hook(__FILE__, 'my_plugin_activate');
// 定义插件停用时执行的函数
function my_plugin_deactivate() {
// 删除之前创建的选项
delete_option('my_plugin_default_option');
// 注意:通常不在停用钩子中删除数据,以免用户重新激活时丢失设置
// 更常见的清理工作在卸载钩子中处理
}
register_deactivation_hook(__FILE__, 'my_plugin_deactivate'); من المهم ملاحظة أن…register_deactivation_hookعادةً ما يتم استخدام هذه الطرق لعمليات تنظيف خفيفة، بينما يجب أن يتم حذف البيانات بشكل دائم (مثل حذف جداول قواعد البيانات) من خلال خواص التنزيل (uninstallation hooks). ويتطلب ذلك أن تكون وظيفة التregister_uninstall_hookقم بالتسجيل. استخدام هذه الميزات (الـ “hooks”) بشكل مناسب سيضمن أن سلوك إضافتك (plugin) يتبع المعايير المطلوبة، ولن يترك بيانات زائدة على الموقع الإلكتروني.
فهم واستخدام الخطافات (hooks) والمرشحات (filters)
جوهر تطوير إضافات ووردبريس (WordPress Plugins) يكمن في آلية “الخطافات” (Hooks)، والتي تسمح لك بإدخال كود مخصص في نقاط زمنية معينة أو في مواقع محددة داخل ووردبريس لتعديل أو توسيع وظائفه الأساسية. تنقسم الخطافات بشكل رئيسي إلى نوعين: الإجراءات (Actions) والمرشحات (Filters).
تسمح خطافات الأفعال (Action Hooks) بتنفيذ دوال مخصصة عند حدوث أحداث معينة. على سبيل المثال، عند نشر مقالة…publish_postعند تحميله في رأس الصفحة الويب…wp_head) أو أثناء عملية التهيئة في واجهة الإدارة (admin_initيمكنك استخدامadd_action()هناك دالة مخصصة لتثبيت الكود الخاص بك. فيما يلي مثال بسيط يقوم تلقائيًا بإضافة نص مخصص في نهاية كل مقالة:
function add_custom_footer_to_content($content) {
if (is_single()) { // 仅在单篇文章页面添加
$custom_text = '<p><em>شكرًا لقراءتك هذا المقال!</em></p>';
$content .= $custom_text;
}
return $content;
}
// 使用‘the_content’过滤器,注意这是一个过滤器(Filter)的例子
add_filter('the_content', 'add_custom_footer_to_content'); كما هو موضح في الكود أعلاه، نحن نستخدم في الواقع مرشحات (Filters). تُستخدم دوال المرشحات (Filter Hooks) لتعديل البيانات المُرسلة إليها. الفرق الرئيسي بينها وبين الإجراءات (Actions) هو أن المرشحات يجب أن تعيد القيم المعدلة. تشمل المرشحات النموذجية:the_content(تعديل محتوى المقال)the_title(تعديل العنوان) وexcerpt_length(تم تعديل طول الملخص). والمقابل لذلك…add_filter()تُستخدم الدالة لتثبيت دوال المرشحات (filters).
إنشاء خطافات مخصصة (custom hooks) ليتمكن الآخرون من توسيع وظائف النظام.
الإضافة (plugin) المصممة بشكل جيد لا تقتصر فقط على استخدام خيوط الوصل (hooks) الأساسية الخاصة بـ WordPress، بل توفر أيضًا خيوط وصل مخصصة خاصة بها، لتمكين المطورين الآخرين من توسيع وظائف هذه الإضdo_action()يمكن للدوال إنشاء "خطافات إجراءات" (action hooks)، واستخدامها لتنفيذ مهام معينة.apply_filters()يمكن إنشاء خطاف (hook) لمرشح (filter).
القراءة الموصى بها دليل كامل لتطوير الإضافات في ووردبريس: ابني إضافتك الخاصة من الصفر إلى واحد.。
على سبيل المثال، قبل أن يقوم الإضافة الخاصة بك بمعالجة بيانات معينة، يمكن توفير فلتر يسمح للآخرين بتعديل المعاملات المدخلة:
// 定义插件的主要处理函数
function my_plugin_process_data($input_data) {
// 在核心处理前,允许其他开发者通过过滤器修改 $input_data
$filtered_data = apply_filters('my_plugin_filter_input', $input_data);
// ... 使用 $filtered_data 进行核心处理 ...
// 在处理完成后,触发一个动作钩子,通知其他开发者
do_action('my_plugin_after_processing', $filtered_data);
return $result;
} من خلال إنشاء خطافات مخصصة (custom hooks)، يصبح الإضافة الخاصة بك قابلة للتوسعة بشكل جيد، وهو ما يتوافق مع فلسفة تطوير ووردبريس نفسها.
إضافة صفحة إدارة وخيارات تعديل للإضافة (Plugin).
معظم الإضافات العملية تحتاج إلى واجهة إدارة خلفية تسمح لمديري المواقع بتكوين خيارات الإضافة. يوفر ووردبريس مجموعة واسعة من واجهات برمجة التطبيقات (APIs) لإنشاء قوائم الإدارة وصفحات الإعدادات.
أولاً، يجب عليك استخدام…add_action('admin_menu', 'your_function')استخدم الخطاف (hook) لتسجيل عنصر قائمة (menu item). في الدالة المناسبة، قم بتطبيق الإجراءات اللازمة لتسجيل هذا العنصر في القائمة.add_menu_page()أوadd_submenu_page()هناك دوال متاحة لإضافة القوائم الرئيسية أو الفرعية. فيما يلي مثال أساسي لإضافة قائمة رئيسية وتهيئة الصفحة المعنية:
// 钩入 admin_menu 来添加管理菜单
function my_plugin_add_admin_menu() {
add_menu_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 权限(管理员)
'my-plugin-settings', // 菜单slug
'my_plugin_settings_page', // 用于显示页面内容的回调函数
'dashicons-admin-generic', // 图标(Dashicon)
80 // 菜单位置
);
}
add_action('admin_menu', 'my_plugin_add_admin_menu');
// 定义设置页面的显示内容
function my_plugin_settings_page() {
// 检查用户权限
if (!current_user_can('manage_options')) {
return;
}
?>
<div class="wrap">
<h1><?php echo esc_html(get_admin_page_title()); ?></h1>
<form action="/ar/options.php/" method="post" data-trp-original-action="options.php">
<?php
// 输出设置字段和非ce字段
settings_fields('my_plugin_options_group');
do_settings_sections('my-plugin-settings');
submit_button('保存设置');
?>
<input type="hidden" name="trp-form-language" value="ar"/></form>
</div>
أنا لا أعرف ماذا أقول. حقول إعدادات التسجيل والتحقق
مجرد وجود الصفحات ليس كافيًا؛ تحتاج إلى استخدام واجهة برمجة التطبيقات (API) الخاصة بإعدادات WordPress لتسجيل خيارات الإعدادات بشكل آمن، وتخزينها، والتحقق من صحتها. يشمل هذا العملية استخدام…register_setting()、add_settings_section()وadd_settings_field()وغيرها من الدوال.
يوضح الكود أدناه كيفية تسجيل مجموعة من خيارات الإعدادات وحقل نصوصي:
// 初始化插件设置
function my_plugin_settings_init() {
// 注册一个设置选项组及其数据
register_setting(
'my_plugin_options_group', // 选项组名,需与settings_fields()参数一致
'my_plugin_settings', // 存储在wp_options表中的选项名
'my_plugin_sanitize_input' // 可选的验证回调函数
);
// 添加一个设置区域
add_settings_section(
'my_plugin_section_main',
'主要设置',
null, // 区域描述的回调函数,可为空
'my-plugin-settings' // 所属页面的slug
);
// 向该区域添加一个具体的字段
add_settings_field(
'my_plugin_field_text',
'示例文本字段',
'my_plugin_field_text_render', // 渲染字段HTML的回调函数
'my-plugin-settings',
'my_plugin_section_main'
);
}
add_action('admin_init', 'my_plugin_settings_init');
// 渲染文本输入字段的函数
function my_plugin_field_text_render() {
$options = get_option('my_plugin_settings');
$value = $options['text_field'] ?? ''; // PHP 7.0+ 空合并运算符
?>
<input type='text' name='my_plugin_settings[text_field]' value='<?php echo esc_attr($value); ?>'>
<?php
}
// 清理和验证输入的函数
function my_plugin_sanitize_input($input) {
$sanitized_input = [];
if (isset($input['text_field'])) {
// 清理文本输入,移除非法标签
$sanitized_input['text_field'] = sanitize_text_field($input['text_field']);
}
return $sanitized_input;
} من خلال واجهة برمجة التطبيقات (API) للإعدادات (Settings API)، يقوم ووردبريس تلقائيًا بمعالجة عمليات حفظ الخيارات والتحقق من الأمان وفحص الصلاحيات، مما يسهل بشكل كبير عملية التطوير ويزيد من مستوى الأمان.
الملخصات
من خلال هذا الدليل، قمنا بشكل منهجي بمراجعة الخطوات الرئيسية في تطوير إضافات ووردبريس: بدءًا من إعداد البيئة المناسبة وإنشاء ملفات الإضافة الأساسية، مرورًا بفهم واستخدام آليات الـ “hooks” الأساسية في ووردبريس، وأخيرًا إضافة واجهة إدارة متخصصة وخيارات تكوين للإضافة. تم عرض أجزاء رئيسية من الكود والممارسات القياسية في كل خطوة. جوهر تطوير الإضافات يكمن في الاستفادة الكاملة من نظام الـ “hooks” القوي في ووردبريس لتوسيع وظائف الإضافة، مع الالتزام بمعايير واجهة برمجة التطبيقات (API) لضمان الأمان والتوافق. تذكر أن البدء بفكرة بسيطة وإضافة المزيد من الميزات تدريجيًا، مع إجراء اختبارات شاملة طوال عملية التطوير، هو الطريق الفعال لبناء إضافات ممتازة. بعد ذلك، يمكنك استكشاف مواضيع أكثر تقدمًا، مثل إنشاء أنواع مقالات مخصصة، وإضافة رموز قصيرة (Shortcodes)، ومعالجة طلبات AJAX، وتدويل إضافتك.
الأسئلة الشائعة الأسئلة المتداولة
هل يجب أن أكون خبيرًا في PHP لتطوير مكونات WordPress الإضافية؟
نعم، من الضروري امتلاك أساس متين في لغة PHP، حيث أن قلب نظام WordPress وإضافاته مكتوبة بلغة PHP. يجب أن تفهم صيغة لغة PHP والدوال ومفاهيم البرمجة الكائنية التوجهية وغيرها. بالإضافة إلى ذلك، فإن امتلاك معرفة أساسية بلغات HTML وCSS وJavaScript سيكون مفيدًا للغاية عند إنشاء واجهات المستخدم والتفاعلات معها.
كم عدد الملفات التي يجب أن يحتوي عليها إضافة (plugin)؟
لا يوجد أي متطلب إلزامي. يمكن أن يحتوي الإضافة (plugin) على ملف PHP رئيسي واحد فقط. ولكن مع تعقيد الوظائف، من الأفضل تقسيم الكود إلى وحدات منفصلة وتخزينها في ملفات متعددة.admin.phpالتعامل مع الخلفية (العمليات التي تتم في الخادم أو النظام).public.phpالتعامل مع الجزء الأمامي (الواجهة البرمجية للمستخدم).includesوضع الدوال العامة في مجلدات هو أسلوب أفضل، حيث يساعد ذلك على تنظيم الكود وصيانته.
لماذا يؤدي تفعيل الإضافة الخاصة بي إلى ظهور شاشة بيضاء على الموقع الإلكتروني؟
عادةً ما يحدث هذا بسبب خطأ فادح (Fatal Error)، مثل خطأ في الصياغة، أو استدعاء لدالة أو فئة غير موجودة. يرجى التأكد من أنك قمت بتصحيح جميع الأخطاء قبل محاولة إعادة التشغيل أو مواصلة العملية.wp-config.phpتم تفعيلها.WP_DEBUGالنمط، وتحقق منه.wp-content/debug.logمعلومات الخطأ الموجودة في الملف: يمكنك استعادة الوصول إلى الموقع بسرعة عن طريق تعطيل الإضافة الخاصة بك عبر FTP أو مدير الملفات (عن طريق إعادة تسمية مجلد الإضافة).
كيف يمكن معالجة البيانات التي يقوم المستخدمون بإرسالها من خلال الواجهة الأمامية بشكل آمن؟
لا يجب أبدًا الوثوق بالبيانات التي يدخلها المستخدمون. قبل معالجة أي بيانات تأتي من النماذج (forms)، معاملات URL، أو ملفات الكوكيز (cookies)، يجب التحقق من صحتها وتنقيتها وتهيئتها بشكل مناسب (عن طريق استخدام عمليات مثل التحقق من الصحةsanitize_text_field()(تنظيف النص)esc_url()(رابط URL محمي/مشفر)wp_kses_post()(تم تصفية المحتوى باستخدام العلامات HTML المسموح بها) وintval()(تحويلها إلى أعداد صحيحة). عند إخراج البيانات إلى صفحة HTML، يجب استخدام ذلك بالتأكيد.esc_html()、esc_attr()يتم استخدام دوال مثل هذه لتنفيذ عمليات التهريب (escaping).
كيف يمكنني جعل نصوص إضافتي (البرامج الإضافية) تدعم عدة لغات؟
يجب تحقيق ذلك من خلال عملية التدويل (i18n – Internationalization). في كودك، قم بتغيير جميع النصوص التي تحتاج إلى ترجمة بحيث تكون مُعدة للترجمة إلى لغات أخرى.__()أو_e()تغليف الدوال (Function Wrapping)، ثم ضبط الإعدادات بشكل صحيح في تعليقات بداية الإضافة (Plugin Header Comments).Text DomainوDomain Pathاستخدم أدوات مثل Poedit لإنشاء المحتوى..potملفات القوالب، وإنشاء نسخ منها بلغات مختلفة..poو.moسيقوم ووردبريس بتحميل الترجمات المناسبة تلقائيًا بناءً على إعدادات اللغة للموقع.
ما التالي، ما التالي؟
القراءة الموسعة والمعرفة العملية
فيما يلي بعض الموضوعات ذات الصلة بموضوع هذه المقالة وهي مناسبة لمزيد من القراءة المتعمقة. وغالباً ما يكون من الأفضل إعطاء الأولوية للبدء بالمقال الأقرب إلى مشكلتك الحالية ثم التوسع تدريجياً إلى المواضيع المحيطة.
- دليل البدء في بناء المواقع الإلكترونية: التعرف على كامل عملية تطوير المواقع الحديثة من الصفر
- الدليل الشامل لفهم مواضيع ووردبريس: من الأساسيات إلى التخصيصات المتقدمة
- لماذا تم اختيار WooCommerce كحل لمتجرك الإلكتروني؟
- دليل شامل لـ WooCommerce: بناء متجرك الإلكتروني واستراتيجيات المبيعات الخاصة بك من الصفر
- 10 إضافات WordPress أساسية لتحسين أداء الموقع وأمانه بشكل شامل