من الصفر: بناء أول إضافة (Plugin) لموقع ووردبريس (WordPress) الخاص بك

قراءة 3 دقائق
2026-03-14
2026-06-04
2,726
أنا أحصل على عمولة عند التسوق عبر الروابط أدناه، ولا يُضاف أي تكلفة عليك.

من الصفر: بناء أول إضافة (Plugin) لموقع ووردبريس (WordPress) الخاص بك

تعتبر تطوير إضافات ووردبريس (WordPress Plugins) الطريقة الأساسية لتوسيع الميزات الأساسية لنظام ووردبريس. من خلال إنشاء الإضافات، يمكن للمطورين إضافة وظائف مخصصة إلى المواقع الإلكترونية دون الحاجة إلى تعديل القوالب (Themes) أو الملفات الأساسية لنظام ووردبريس، مما يضمن استقلالية هذه الوظائف وقابليتها للنقل إلى مواقع أخرى. تتكون الإضافة القياسية عادةً من ملف PHP رئيسي، بالإضافة إلى ملفات موارد اختيارية (مثل CSS وJavaScript) وحزم لغوية (Language Packs). فهم الهيكل الأساسي للإضافات هو الخطوة الأولى الضرورية للنجاح في تطويرها.

الهيكل الأساسي لإضافات ووردبريس وكيفية إنشاؤها

أبسط شكل لإضافة (plugin) هو عبارة عن ملف يتم وضعه في مكان معين…/wp-content/plugins/مجلد موجود داخل الدليل. يجب أن يحتوي هذا المجلد على ملف PHP رئيسي واحد على الأقل، ويجب أن تحتوي تعليقات البداية (header comments) في هذا الملف على معلومات الإضافة (plugin information) المخصصة لـ WordPress.

كتابة تعليقات في رأس الإضافة (Plugin Header Comments)

يجب أن يبدأ الملف الرئيسي لكل إضافة (plugin) بكتلة تعليقات خاصة بلغة PHP، وتُعرف هذه الكتلة باسم “رأس الإضافة” (plugin header). يقوم ووردبريس (WordPress) بقراءة هذه المعلومات لتحديد إضافتك وعرضها في قائمة الإضافات داخل واجهة الإدارة الخاصة به. يتمثل شكل تعليق رأس الإضافة القياسي كما يلي:

القراءة الموصى بها تحليل متعمق لتطوير إضافات ووردبريس: من البداية إلى التخصيص الفعال

<?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
 */

من بينها،Plugin Nameإن ملء هذه الحقول ضروري، بينما الحقول الأخرى اختيارية. ومع ذلك، من أجل كفاءة واحترافية الإضافة (البرنامج الإضافي)، ننصحك بملء جميع الحقول قدر الإمكان.Text Domainيُستخدم للتدويل، وهو الأساس لترجمة الإضافات اللاحقة.

خادم ووردبريس من شركة UltaHost
ضمان استرداد المال خلال 30 يومًا، عرض نطاق ترددي وقواعد بيانات غير محدودين، حماية مجانية ضد هجمات DDoS، خصم 50% عند الشراء لمدة 3 سنوات (السعة المتاحة: 501–4 تيرابايت).

إنشاء ملف رئيسي للإضافة والمجلدات المرتبطة بها

أولاً، في…/wp-content/plugins/قم بإنشاء مجلدًا جديدًا في الدليل، على سبيل المثال.my-first-pluginثم قم بإنشاء الملف الرئيسي للغة PHP داخل هذا المجلد، وعادة ما يكون اسمه مطابقًا لاسم المجلد نفسه.my-first-plugin.phpقم بكتابة التعليقات الأعلاه في بداية الملف، ثم احفظه. بعد ذلك، ستتمكن من رؤية الإضافة وتفعيلها في صفحة “الإضافات” (Plugins) داخل واجهة ووردبريس الخلفية. لكن في هذه المرحلة، لا تمتلك الإضافة أي

مفاهيم أساسية في التطوير: خطافات الأفعال (Action Hooks) والمرشحات (Filters)

تعتمد بنية إضافات ووردبريس (WordPress Plugins) على نظام “الخطافات” (Hooks)، والذي يعمل كجسر للتفاعل بين الإضافات والنسخة الأساسية من برنامج ووردبريس. تنقسم الخطافات بشكل أساسي إلى نوعين: خطافات الإجراءات (Action Hooks) و

فهم واستخدام خطافات الإجراءات (Action Hooks)

تسمح خطافات الأعمال (Action Hooks) بتنفيذ كود PHP مخصص في أوقات محددة أو عند حدوث أحداث معينة. يمكنك استخدامها لتنفيذ تعديلات أو إضافات إلى وظائف البرنامج بطريقة مرنة ومتحكمة.add_action()تقوم الدالة بـ “تثبيت” دالتك على هذا “الخطاف” (hook)، بحيث يمكنها تنفيذ ما تريده تلقائيًا. على سبيل المثال، يمكنها إضافة نص تلقائيًا في نهاية محتوى المقال.

دالة myplugin_add_footer_text( $content ) {
    إذا كانت ( is_single( ) ) {
        $content . = '<p>شكرًا لقراءتك!</p>';
    }
    إرجاع $content.
}
add_filter( 'the_content', 'myplugin_add_footer_footer_text' );

لاحظ أن هذا المثال يستخدم في الواقع "خطافات المرشحات" (filter hooks) لتعديل المحتوى. مثال نموذجي على "خطاف الإجراء" (action hook) هو إضافة قائمة في واجهة الإدارة:

القراءة الموصى بها تعلم تطوير إضافات ووردبريس من الصفر: إنشاء أول ميزة مخصصة الخاصة بك

function myplugin_add_admin_menu() {
    add_menu_page(
        '我的插件设置',
        '我的插件',
        'manage_options',
        'myplugin-settings',
        'myplugin_settings_page'
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

هنا،add_action()functionmyplugin_add_admin_menuمرتبط بـadmin_menuهذا “hook للإجراء” (action hook) يتم استدعاؤه من قبل ووردبريس أثناء بناء القائمة الخلفية (backend menu).

فهم واستخدام خيوط (hooks) المرشحات (filter hooks)

تُستخدم خيوط الفلاتر (Filter Hooks) لتعديل البيانات التي ينتجها ووردبريس أثناء عملية المعالجة. يمكنك استخدامها لإجراء تغييرات على هذه البيانات كما تشاء.add_filter()هناك دالة مخصصة لتثبيت (ما يُعرف بـ "mounting") الدوال الخاصة بك. تقوم دالة التصفية (filter function) باستقبال قيمة مدخلة، تعدلها، ثم يجب أن تعيد القيمة المعدلة. على سبيل المثال، يمكن استخدام هذه الدال

function myplugin_modify_title( $title ) {
    return '精选: ' . $title;
}
add_filter( 'the_title', 'myplugin_modify_title' );

المرشحات (Filters) قوية للغاية، وغالبًا ما تُستخدم لتعديل نتائج الاستعلامات، ومحتوى النصوص، وقيم الخيارات، وتقريبًا جميع البيانات التي يولدها نظام ووردبريس (WordPress).

استضافة.كوم استضافة مشتركة
أداء عالٍ مع وحدات المعالجة المركزية AMD EPYC، ووحدات تخزين NVMe SSD وLiteSpeed، ودعم داخلي متخصص على مدار الساعة طوال أيام الأسبوع، وتدابير أمنية متقدمة بما في ذلك SSL، وقوة الغاشمة، والحماية من البرامج الضارة والحماية من DDoS، وتوفير ما يصل إلى 731 تيرابايت 4 تيرابايت

إضافة صفحة إعدادات وخيارات للإضافة (Plugin)

عادةً ما يحتاج الإضافة (البرامج الإضافية) الشاملة والمتكاملة إلى توفير خيارات تكوين للمستخدمين. توفر ووردبريس (WordPress) واجهة برمجة تطبيقات (API) للإعدادات لإنشاء صفحات الخيارات بطريقة آم

إنشاء قائمة إدارية وصفحات إدارية

أولاً، يجب عليك استخدام…add_menu_page()أوadd_options_page()نستخدم دوال مثل… لإضافة صفحة إدارة. عادةً ما نقوم بتثبيت هذه العملية (أي تنفيذ الكود الخاص بإنشاء الصفحة الإدارية) على… (المكان المناسب في النظام).admin_menuعلى الخطاف، كما هو موضح في المثال السابق.myplugin_settings_pageهذه دالة استدعاء (callback function) تُستخدم لعرض محتوى صفحة الإعدادات بصيغة HTML.

استخدم واجهة برمجة التطبيقات (API) Settings لتسجيل الخيارات.

توفر واجهة برمجة التطبيقات (API) للإعدادات (Settings API) طريقة آمنة لتسجيل الإعدادات والتحقق من صحتها وحفظها. تشمل الخطوات الأساسية لاستخدام هذه الواجهة ما يلي:register_setting()قم بتسجيل مجموعة إعدادات واستخدمها.add_settings_section()أضف قسمًا للإعدادات، واستخدمه كما يلي:add_settings_field()أضف حقول الإعدادات المحددة.

القراءة الموصى بها دليل شامل لتطوير إضافات ووردبريس: من المبادئ الأساسية إلى التطبيقات العملية المتقدمة

function myplugin_settings_init() {
    // 注册一个设置
    register_setting( 'myplugin_settings', 'myplugin_options' );

    // 添加一个设置区块
    add_settings_section(
        'myplugin_section_general',
        '通用设置',
        'myplugin_section_general_cb',
        'myplugin-settings'
    );

    // 添加一个设置字段
    add_settings_field(
        'myplugin_field_text',
        '欢迎语',
        'myplugin_field_text_cb',
        'myplugin-settings',
        'myplugin_section_general',
        [ 'label_for' => 'myplugin_field_text' ]
    );
}
add_action( 'admin_init', 'myplugin_settings_init' );

ثم، ستحتاج إلى كتابة الدالة الاستدعائية (callback function) المقابلة.myplugin_section_general_cbوmyplugin_field_text_cbاكتب مربع إدخال HTML لوصف الكتلة والحقول. وأخيرًا، فيmyplugin_settings_pageفي الدالة، يتم استخدام…settings_fields()وdo_settings_sections()دالة لعرض النموذج بأكمله.

أمان الإضافات وأفضل الممارسات

عند تطوير الإضافات، يعتبر الأمان من العوامل الأساسية التي يجب أخذها في الاعتبار أولاً. قد تشكل إضافة غير آمنة خطراً على الموقع بأكمله.

الاستضافة المشتركة InterServer
استضافة مشتركة $2.50 دولار أمريكي في الشهر، الشهر الأول $0.1 دولار أمريكي الرمز الترويجي tryinterserver، 461 نص برمجي للتطبيقات السحابية، تثبيت بنقرة واحدة.

المصادقة والتنظيف والهروب من الأحرف الخاصة.

لا تثق أبدًا بالبيانات المدخلة من المستخدمين أو تلك المأخوذة من قواعد البيانات. يجب التحقق من صحة أي بيانات مدخلة (مثل $_POST أو $_GET) وتنقيتها قبل معالجتها. يوفر ووردبريس عددًا كبيرًا من الدوال لمساعدتك في ذلك.sanitize_text_field(), intval(), wp_kses()إلخ. عند إخراج البيانات إلى HTML أو JavaScript، يجب تنفيذ عملية تهريب (escaping) لها، وذلك باستخدام دوال مثل…esc_html(), esc_attr(), esc_js()وwp_json_encode()

// 接收、清理并保存数据
$user_input = sanitize_text_field( $_POST['my_field'] );
update_option( 'my_option', $user_input );

// 安全地输出数据
echo esc_html( get_option( 'my_option' ) );

استخدام طرق غير مرتبطة بـ CE (Common Edge) للتحقق من الصلاحيات

بالنسبة لجميع عمليات إرسال النماذج في الخلفية أو طلبات AJAX الناتجة عن الإضافات، يجب استخدام ميزة “nonce” الخاصة بووردبريس للتحقق من شرعية وفريدانة الطلبات، وذلك لمنع هجمات تزوير الطلبات عبر المواقع المختلفة (Cross-Site Request Forgery – XSS). في الوقت نفcurrent_user_can()تقوم الدالة بالتحقق مما إذا كان لدى المستخدم الحالي الصلاحيات اللازمة لتنفيذ تلك العملية أم لا.

// 在表单中输出 nonce 字段
wp_nonce_field( 'myplugin_action', 'myplugin_nonce' );

// 在处理请求时验证 nonce 和权限
function myplugin_handle_form_submit() {
    if ( ! isset( $_POST['myplugin_nonce'] ) ||
         ! wp_verify_nonce( $_POST['myplugin_nonce'], 'myplugin_action' ) ||
         ! current_user_can( 'manage_options' ) ) {
        wp_die( '安全校验失败。' );
    }
    // ... 安全地处理数据 ...
}

الملخصات

تطوير إضافات (Plugins) لووردبريس (WordPress) يعتبر مشروعًا منهجيًا يبدأ بفهم الهيكل الأساسي لووردبريس وآليات الاستجابة للأحداث (Hook Mechanisms)، ثم يتطور إلى تنفيذ الوظائف المطلوبة وإنشاء واجهات المستخدم، وفي النهاية يجب اتباع ممارسات أمان صارمة أثناء عملية التطوير. من خلال الالتزام بمعايير البرمجة الخاصة بووردبريس واستغلال واجهات برمجة التطبيقات (APIs) المتاحة فيه بشكل كامل، يمكن للمطورين إنشاء إضافات قوية وآمنة وسهلة الصيانة. الجوهر في هذه العملية يكمن في دمج الوظائف المخصصة بشكل سلس مع دورة حياة ووردبريس باستخدام آليات الاستجابة للأحداث مثل “الأفعال” (Actions) و“المرشحات” (Filters)، بالإضافة إلى استخدام واجهة برمجة التطبيقات المخصصة للإعدادات (Settings API) لإدارة الإعدادات. كما يجب دائم

الأسئلة الشائعة الأسئلة المتداولة

كيف يمكنني تصحيح أخطاء (الديباجات) في إضافة ووردبريس الخاصة بي (####)؟
الخطوة الأولى هي تفعيل وضع التصحيح (Debugging Mode) في ووردبريس.wp-config.phpفي الملف، سيتم…WP_DEBUGتم تعيين الثابت على قيمةtrueسيتم عرض أخطاء PHP وتحذيراتها وإشعاراتها مباشرة على الصفحة. بالنسبة لعمليات التصحيح الأكثر تعقيدًا، يمكن استخدام…error_log()تقوم الدالة بتسجيل المعلومات في سجل الأخطاء الخاص بالخادم، أو تستخدم إضافات تصحيح الأخطاء المتخصصة لعرض تفاصيل الاستعلامات والمكونات الأخرى ذات الصلة.

كيف يمكن لإضافتي (البرنامج الإضافي) أن تدعم عدة لغات؟

يستخدم WordPress إطار عمل GNU gettext لتحقيق التدويل (الترجمة إلى لغات أخرى). أولاً، يتم تعريف ذلك في تعليقات بداية ملف الإضافة (plugin file).Text Domainفي كود الإضافة (البرنامج الإضافي)، يجب استخدام تقنية معينة لترجمة جميع النصوص التي تحتاج إلى ترجمة.__()قم بالترجمة._e()قم بالترجمة، ثم استخدم أداة مثل Poedit لاستخراج النصوص من مصدر كود الإضافة (البرامج الإضافية) وإنشاء ملفات تحتوي على هذه النصوص..potملفات القوالب… وبالنسبة لكل لغة، يتم إنشاء نسخة مقابلة منها..poوالمُجمَع (المُترجم) بعد عملية التجميع (الترجمة)..moالملف، ووضعه داخل الإضافة (البرنامج الإضافي)./languages/تحت القائمة.

كيف يمكن تجنب تعارض أسماء الفئات (classes) الموجودة في الإضافات (plugins) مع إضافات أخرى؟

لتجنب حدوث تعارضات في أسماء الفئات (classes)، الدوال (functions)، أو الثوابت (constants)، فإن أفضل الممارسات هي استخدام المساحات الاسمية (namespaces) أو إضافة بادئات فريدة لجميع المعرفات (identifiers). اعتبارًا من PHP 5.3، يُنصح باستخدام المساحات الاسمية. على سبيل المثال،namespace MyPluginAdmin;إذا أخذنا في الاعتبار مسألة التوافق، فيجب استخدام بادئة، ويجب أن تكون هذه البادئة فريدة بما فيه الكفاية. على سبيل المثال، يمكن استخدام مزيج من اسم الشركة واختصار اسم الإضافة (البرنامج الإضافي).function acme_myplugin_init() {}تم تعريف اسم الفئة كـclass Acme_MyPlugin_Admin_Settings {}

كيف يمكنني إضافة جدول قاعدة بيانات مخصص إلى إضافتي (plugin)؟

أفضل وقت لإنشاء جدول مخصص عند تفعيل الإضافة (البرنامج الإضافي) هو عند تشغيلها. يمكنك تغليف كود إنشاء الجدول في دالة واحدة، ثم استخدام هذه الدالة لإنشاء الجدول تلقائيًا عند تفعيل الإضافregister_activation_hook()استخدم دالة للتسجيل. داخل الدالة، قم بتنفيذ الإجراءات اللازمة.dbDelta()هذه الدالة مصممة لإنشاء أو تحديث هيكل الجداول بشكل آمن، وتتطلب استخدام صيغ SQL محددة جدًا. يجب استخدامها بعناية فائقة.$wpdb->prefixلإضافة بادئة موقع إلى أسماء الجداول، من أجل دعم بيئات متعددة المواقع.