تكمن قوة ووردبريس (WordPress) ليس فقط في وظائفها الأساسية، بل أيضًا في قدرتها على التوسع بشكل لا نهائي من خلال الإضافات (plugins). عندما تحتاج إلى إضافة ميزة معينة إلى موقعك ولا تتوفر هذه الميزة في أي إضافة متاحة مسبقًا، يصبح تعلم كيفية تطوير الإضافات أمرًا ضروريًا للغاية. سيقوم هذا الدليل بمرافقتك خطوة بخطوة، من المفاهيم الأساسية، لبناء أول إضافة خاصة بك تحتوي على جميع الميزات اللازمة، مما يمكنك من إتقان المهارات الأساسية للتطوير المخصص.
بيئة تطوير الإضافات والهيكل الأساسي
قبل البدء في كتابة الكود، تحتاج إلى بيئة تطوير مناسبة وهيكل مشروع واضح. هذا لا يساعدك فقط على العمل بكفاءة، ولكنه أيضًا يضمن أن الإضافة (البرنامج الإضافي) تتبع معايير ووردبريس (WordPress)، مما يسهل عمليات الصيانة والتوزيع لاحقًا.
بناء بيئة تنمية محلية
يُنصح باستخدام برامج خادم محلية مثل XAMPP أو MAMP أو Local by Flywheel لإنشاء بيئة عمل لـ WordPress. هذه البرامج تتيح لك إجراء عمليات الاختبار والتصحيح بشكل آمن على جهاز الكمبيوتر الخاص بك. بالإضافة إلى ذلك، تأكد من أن محرر الكود الخاص بك (مثل VS Code أو PhpStorm) يدعم تمييز لغة PHP وتقديم اقتراحات للكود، وهو ما سيساعد كثيرًا في تحسين كفاءة عملية التطوير.
القراءة الموصى بها دليل البدء في تطوير إضافات ووردبريس: بناء أول إضافة خاصة بك من الصفر。
فهم المكونات الأساسية للإضافات (Plugins)
يمكن أن يتكون أبسط إضافة (plugin) لووردبريس من ملف واحد فقط، لكن الإضافات ذات الهيكل الجيد عادةً ما تحتوي على عدة مجلدات وملفات. الملف الأساسي هو الملف الرئيسي للإضافة، ويجب أن يحتوي على تعليق خاص يُعرف بـ "plugin header"، وذلك لإعلام نظام ووردبريس بوجود الإضافة.
عادةً ما يتم تسمية الملف الرئيسي للإضافة (plugin) باسم وظيفة الإضافة نفسها، على سبيل المثال:my-custom-functionality.phpيجب أن يحتوي الجزء العلوي منه على رأس معلومات الإضافة (plugin information header) القياسي.
<?php
/**
* Plugin Name: 我的定制功能模块
* Plugin URI: https://example.com/my-custom-plugin
* Description: 这是一个用于演示的WordPress定制功能插件。
* Version: 1.0.0
* Author: 你的名字
* License: GPL v2 or later
* Text Domain: my-custom-plugin
*/ هذا التعليق هو مصدر المعلومات الذي يتم التعرف عليه وعرضه في صفحة “الإضافات” (Plugins) داخل واجهة ووردبريس الخلفية.Text Domainيُستخدم هذا الملف للترجمة الدولية (internationalization). بعد ذلك، يجب أن يتم كتابة جميع أكواد الوظائف في هذا الملف أو في الملفات الأخرى التي يتم استيرادها منه.
التطوير الأساسي: خطافات الأفعال (Action Hooks) والمرشحات (Filters)
تعتمد بنية إضافات ووردبريس (WordPress Plugins) على نظام “الخطافات” (Hooks)، والذي يُعد الأساس الذي يقوم عليه قابليتها للتوسعة. فهم واستخدام الخطافات بشكل احترافي يُعد جزءًا أساسيًا من عملية تطوير الإضافات. تنقسم الخطافات بشكل رئيسي إلى نوعين: خطافات الإجراءات (Action Hooks) وخطافات المرشحات (Filter Hooks).
استخدم خطافات الحركة لإضافة وظائف.
تسمح خيوط الأعمال (Action Hooks) بـ “إدخال” وتنفيذ دوال PHP الخاصة بك في أوقات محددة أو عند حدوث أحداث معينة. على سبيل المثال، قد ترغب في تنفيذ عملية ما عند نشر مقال، أو إضافة قطعة من الكود المخصص في أسفل صفحة الويب.
القراءة الموصى بها من الصفر إلى الواحد: دليل شامل لتطوير إضافات ووردبريس وأفضل الممارسات。
يمكنك استخدامه.add_action()تقوم الدالة بتثبيت الدالة المخصصة الخاصة بك على خطاف إجراء محدد. يوضح المثال التالي كيفية إضافة مربع بيانات مخصص في صفحة تحرير المقالات داخل واجهة الإدارة.
// 将函数挂载到‘add_meta_boxes’这个动作钩子
add_action( 'add_meta_boxes', 'mcp_add_custom_meta_box' );
function mcp_add_custom_meta_box() {
add_meta_box(
'mcp_custom_box_id', // 元框的唯一ID
'自定义设置', // 元框标题
'mcp_custom_meta_box_html', // 回调函数,用于输出HTML内容
'post', // 在‘文章’编辑页面显示
'side', // 显示在侧边栏
'high' // 优先级
);
}
// 定义输出元框HTML内容的回调函数
function mcp_custom_meta_box_html( $post ) {
// 获取已保存的值
$value = get_post_meta( $post->ID, '_mcp_custom_field', true );
// 输出一个非安全字段
echo '<label for="mcp_field">自定义字段:</label>';
echo '<input type="text" id="mcp_field" name="mcp_field" value="' . esc_attr( $value ) . '" />';
} استخدم مُعلقات الفلتر لتعديل البيانات.
تسمح خطافات المرشحات (Filter Hooks) بتعديل أي بيانات تنتجها ووردبريس أثناء عملية المعالجة. على عكس خطافات الإجراءات (Action Hooks)، يجب على دوال المرشحات أن تتلقى قيمة معينة وأن تعيد قيمة معدلة كنتيجة لعمليات التعديل. يمكنك استخدام هذه الخطافات لتنفيذ تعديلadd_filter()دالة لإضافة مرشحات (filters).
على سبيل المثال، عند تعديل نهاية محتوى المقال، يتم إضافة بيان حقوق النشر تلقائيًا.
add_filter( 'the_content', 'mcp_add_copyright_to_content' );
function mcp_add_copyright_to_content( $content ) {
// 仅对单篇文章页面生效
if ( is_single() ) {
$copyright_text = '<p><em>جميع حقوق هذا المقال محفوظة لهذا الموقع، يرجى ذكر المصدر عند إعادة نشره.</em></p>';
$content .= $copyright_text;
}
// 必须返回修改后的内容
return $content;
} تنفيذ إدارة بيانات الإضافات (Plugins)
عادةً ما تحتاج الإضافات (plugins) إلى تخزين البيانات وقراءتها وتحديثها. يوفر ووردبريس (WordPress) واجهات برمجة تطبيقات (APIs) قوية، مثل واجهة خيارات الإضافات (Options API) وواجهة بيانات المقالات (Article Metadata API)، للتعامل مع هذه الاحتياجات بشكل
استخدم واجهة برمجة التطبيقات (API) للخيارات لتخزين الإعدادات.
يجب استخدام واجهة برمجة التطبيقات (API) المخصصة للإعدادات العامة للإضافات (مثل مفاتيح الواجهة البرمجية، حالات التشغيل/الإيقاف، إلخ)، حيث توفر هذه الواجهة الوسائل اللازمة لإدارة هذه الإعدادadd_option(), get_option(), update_option()تُستخدم دوال مثل هذه لإدارة البيانات المبنية على أزواج المفتاح والقيمة.
على سبيل المثال، يمكن إنشاء إعداد تبديل (switch) بسيط للإضافة (plugin).
القراءة الموصى بها إتقان تطوير إضافات ووردبريس: بناء أول وحدة وظيفية توسعية الخاصة بك من الصفر。
// 在插件激活时设置一个默认选项(通常写在激活钩子函数里)
register_activation_hook( __FILE__, 'mcp_plugin_activate' );
function mcp_plugin_activate() {
if ( false === get_option( 'mcp_feature_enabled' ) ) {
add_option( 'mcp_feature_enabled', 'yes' );
}
}
// 在代码中获取这个选项的值
$is_enabled = get_option( 'mcp_feature_enabled', 'yes' ); // 第二个参数是默认值
if ( $is_enabled === 'yes' ) {
// 执行功能
} حفظ وقراءة بيانات الوصف الخاصة بالمقالات (الميتاداتا)
بالنسبة للبيانات المرتبطة بمقالات معينة أو صفحات معينة أو أنواع مقالات مخصصة (مثل الحقول المخصصة الموجودة في مثال المعلومات الوصفية أعلاه)، من الضروري استخدام واجهة برمجة التطبيقات (API) الخاصة ببيانات المقالات (Post Meta). الدالة الرئيسية فيupdate_post_meta()وget_post_meta()。
أنت بحاجة إلى المراقبة أو الاستماع.save_postيتم استخدام “خطافات الإجراءات” (Action Hooks) لحفظ البيانات التي يدخلها المستخدمون داخل المربعات العنصرية (Element Boxes) على الجانب الأمامي (Frontend). يجب إجراء عمليات تحقق أمني (مثل فحص قيمة Nonce) وتحقق من الصلاحيات أ
add_action( 'save_post', 'mcp_save_custom_field_data' );
function mcp_save_custom_field_data( $post_id ) {
// 检查Nonce字段(应在元框HTML中输出wp_nonce_field)
if ( ! isset( $_POST['mcp_meta_box_nonce'] ) || ! wp_verify_nonce( $_POST['mcp_meta_box_nonce'], 'mcp_save_data' ) ) {
return;
}
// 检查自动保存
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return;
}
// 检查用户权限
if ( ! current_user_can( 'edit_post', $post_id ) ) {
return;
}
// 安全地获取并保存字段数据
if ( isset( $_POST['mcp_field'] ) ) {
$my_data = sanitize_text_field( $_POST['mcp_field'] );
update_post_meta( $post_id, '_mcp_custom_field', $my_data );
}
} إنشاء صفحة لإدارة الإضافات (Plugins)
بالنسبة للإضافات المعقدة من الناحية الوظيفية، عادةً ما يكون هناك صفحة إعدادات إدارية مخصصة تتيح لمسؤولي المواقع تكوين مختلف خيارات الإضافة. يوفر ووردبريس مجموعة واسعة من واجهات برمجة التطبيقات (APIs) لإنشاء قوائم وصفحات إدارية ذات تصميم موحد.
إضافة قائمة إدارة عليا
الاستفادة منadd_menu_page()يمكن للدالة أن تضيف عنصر قائمة رئيسي إلى شريط التنقل الأيسر في الخلفية الخاص بالإضافة (plugin) الخاص بك. يجب عليك تحديد عنوان الصفحة، واسم القائمة، والصلاحيات المطلوبة، والاسم المستعار للقائمة، بالإضافة إلى الدالة الاستدع
add_action( 'admin_menu', 'mcp_register_admin_menu' );
function mcp_register_admin_menu() {
add_menu_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单名称
'manage_options', // 所需权限(通常为manage_options)
'mcp-plugin-settings', // 菜单别名(slug)
'mcp_render_settings_page', // 渲染页面的回调函数
'dashicons-admin-generic', // 图标(使用Dashicons)
80 // 菜单位置
);
}
// 定义渲染设置页面的函数
function mcp_render_settings_page() {
// 检查用户权限
if ( ! current_user_can( 'manage_options' ) ) {
return;
}
?>
<div class="wrap">
<h1></h1>
<form action="/ar/options.php/" method="post" data-trp-original-action="options.php">
<?php
// 输出设置字段、非安全字段等(需要配合settings API使用)
settings_fields( 'mcp_settings_group' );
do_settings_sections( 'mcp-plugin-settings' );
submit_button( '保存设置' );
?>
<input type="hidden" name="trp-form-language" value="ar"/></form>
</div>
أنا لا أعرف ماذا أقول. استخدم واجهة برمجة التطبيقات (API) للإعدادات لبناء نموذج.
لمعالجة خيارات النماذج بشكل أكثر أمانًا وانضباطًا، ننصح بشدة باستخدام واجهة برمجة التطبيقات (API) الخاصة بإعدادات ووردبريس (WordPress Settings API). فهي تتولى تلقائيًا مهام التحقق من صحة البيانات (Nonce validation)، وفحص الصلاحيات، وتخزين البيانات، وعرض رسائل الأخطاء. الخطوات الأساسية تشمل:register_setting()إعدادات التسجيل، استخدامها.add_settings_section()إضافة منطقة للإعدادات، بالإضافة إلى استخدامها.add_settings_field()أضف حقول الإعدادات المحددة.
هذا يضمن أن صفحة إعدادات الإضافة الخاصة بك تتوافق مع أسلوب ووردبريس الأساسي (WordPress core style)، وتتبع أفضل الممارسات الأمنية.
الملخصات
من خلال هذا الدليل، لقد مررت بالخطوات الأساسية في تطوير إضافات ووردبريس: بدءًا من إنشاء بيئة التطوير وفهم الهيكل الأساسي لووردبريس، مرورًا بالتعرف على جوهر قابلية توسيع ووردبريس وهو نظام الاستجابات (Hooks)، وتعلم كيفية إضافة أو تعديل الميزات باستخدام الأفعال (Actions) والمرشحات (Filters). بعد ذلك، أتقنت استخدام واجهات برمجة التطبيقات (APIs) المتعلقة بالخيارات (Options API) وبيانات المقالات (Article Metadata API) لإدارة بيانات الإضافات بشكل آمن. وأخيرًا، تعرفت على كيفية إنشاء صفحة إعدادات إضافة مهنية وآمنة.
تطوير الإضافات (البرامج الإضافية) هو عملية تتطلب الكثير من الممارسة العملية، والإتقان الحقيقي يأتي من خلال التطبيق العملي. أنصحك بالبدء بمتطلب بسيط، مثل “إضافة بطاقة تعريف للمؤلف بعد كل مقال”, ثم تطبيق المعرفة التي تعلمتها تدريجيادليل الإضافات الرسمية لووردبريسمع مراجعة الكود، ستتمكن من بناء إضافات مخصصة قوية وذات كود أنيق، وبذلك تحرير كامل إمكانيات ووردبريس.
الأسئلة الشائعة الأسئلة المتداولة
ما هي المعرفة المسبقة المطلوبة لتطوير إضافات (Plugins) لمنصة ووردبريس (WordPress)؟
يجب أن تمتلك معرفة أساسية بلغة البرمجة PHP، وفهمًا للغات HTML و CSS، بالإضافة إلى معرفة أولية بمفاهيم ووردبريس الأساسية مثل المقالات (Articles)، الصفحات (Pages)، الحلقات (Loops)، وعلامات القوالب (Template Tags). ليس من الضروري أن تكون ملمًا ببرمجة التوجه الكائني (Object-Oriented Programming – OOP)، ولكنها ستكون مفيدة للغاية عند بناء إضافات (Plugins) معقدة.
هل يجب أن يكون لملف الإضافة (البرنامج الإضافي) اسم معين؟
لا توجد متطلبات إلزامية، ولكن من أجل الوضوح والتنظيم، يُنصح عادةً باستخدام أسماء توصف وظائف الإضافات (البرامج الإضافية).my-gallery-plugin.phpالشرط الوحيد هو أن يتضمن الجزء العلوي من الملف تعليقات رأس الإضافة (plugin header comments) الصحيحة؛ حيث يقوم ووردبريس (WordPress) بالتعرف على الإضافة من خلال هذه التعليقات.
كيف يمكنني التأكد من أن الإضافة (البرنامج الإضافي) الخاصة بي لن تتعارض مع إضافات أخرى؟
إضافة بادئة فريدة لجميع الدوال (functions) والفئات (classes) والثوابت (constants) وأسماء الخيارات (option names) هي أفضل ممارسة لمنع حدوث تعارضات (conflicts). على سبيل المثال، لا يجب استخدام…get_data()يجب استخدام أسماء دوال عامة وموحدة بدلاً من ذلك.mcp_get_data()(افترض أن اختصار الإضافة الخاصة بك هو mcp). وبالمثل، يجب أن تكون أسماء الخيارات مشابهة لذلك.mcp_settings_array。
بعد الانتهاء من تطوير الإضافة، كيف يمكن توزيعها على الآخرين لاستخدامها؟
قم بضغط مجلد الإضافات الخاص بك إلى ملف ZIP. يمكن للمستخدمين تحميل هذا الملف وتثبيته مباشرة من خلال صفحة “الإضافات” -> “تثبيت إضافة” -> “تحميل إضافة” في واجهة ووردبريس الخلفية. إذا كنت ترغب في نشر الإضافة في المجلد الرسمي لإضافات ووردبريس، فسيتعين عليك اتباع إجراءات أكثر صرامة.دليل التقديموكذلك قبول مراجعة الكود.
هل يجب أن أستخدم نهجاً تقليدياً (موجهاً للعمليات) أم نهجاً موجهاً للكائنات في تطوير الإضافات (plugins)؟
بالنسبة للإضافات البسيطة والصغيرة، الأسلوب القائم على التنفيذ التدريجي (استخدام دوال مستقلة) أكثر بساطة وسرعة في التطبيق. أما بالنسبة للإضافات المتوسطة والكبيرة ذات الميزات المعقدة، فإن استخدام الأسلوب القائم على الكائنات (استخدام الفئات) يساعد على تنظيم الكود بشكل أفضل، مما يعزز من سهولة الصيانة وإمكانية إعادة الاستخدام. كلا الأسلوبي
ما التالي، ما التالي؟
القراءة الموسعة والمعرفة العملية
فيما يلي بعض الموضوعات ذات الصلة بموضوع هذه المقالة وهي مناسبة لمزيد من القراءة المتعمقة. وغالباً ما يكون من الأفضل إعطاء الأولوية للبدء بالمقال الأقرب إلى مشكلتك الحالية ثم التوسع تدريجياً إلى المواضيع المحيطة.
- دليل تطوير إضافات ووردبريس: كيف تبني إضافتك المخصصة الأولى من الصفر
- كيف تصبح مطورًا لإضافات ووردبريس: دليل شامل من الصفر إلى النهاية
- دليل شامل لتطوير إضافات ووردبريس: من المبتدئين إلى الخبراء في إنشاء إضافات متخصصة
- تطوير الإضافات في ووردبريس: من الأساسيات إلى الاحترافية - إنشاء أول إضافة مخصصة لك.
- من الصفر إلى الواحد: دليل شامل لتطوير أول إضافة (Plugin) لموقع ووردبريس (WordPress) الخاص بك خطوة بخطوة