كشف النقاب عن تطوير المُلحقات: بناء أول ملحق لك من الصفر

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

كشف النقاب عن تطوير المُلحقات: بناء أول ملحق لك من الصفر

السحر الأساسي لبرنامج ووردبريس (WordPress) يكمن في قابليته العالية للتوسعة. من خلال تطوير إضافات (plugins) مخصصة، يمكن للمطورين إضافة أي ميزات يحتاجونها إلى الموقع بسهولة تامة، دون الحاجة إلى تعديل الكود الأساسي لبرنامج ووردبريس، مما يضمن أمان التحديثات وسهولة استخدام الموقع. سيقوم هذا الدليل بتوجيهك بشكل منهجي لفهم العمليات الأساسية لتطوير الإضافات، ومعايير البنية التحتية، وأفضل الممارسات في هذا المجال.

الأساس الأساسي لتطوير الإضافات (البرامج الإضافية)

قبل البدء في كتابة الكود، من المهم جدًا فهم المفاهيم الأساسية والهيكل القياسي لإضافات ووردبريس (WordPress plugins). إضافة ووردبريس، في جوهرها، عبارة عن ملف أو أكثر من ملفات بلغة PHP، تم تجميعها في دليل (directory) واحد، وتحتوي على ملف تعليقات خاص (header comment file).

معايير الملف الرئيسي للإضافة (Plugin Main File Standards)

يجب أن يحتوي كل إضافة (plugin) على ملف PHP رئيسي. يجب أن يتضمن هذا الملف رؤوس معلومات الإضافة القياسية، حتى يتمكن نظام ووردبريس (WordPress) من التعرف عليها وإدارتها. توجد هذه المعلومات على شكل كتل تعليقات محددة. على سبيل المثال، إضافة تسمى… my-first-plugin.php قد تحتوي ملفات (…) على المحتويات التالية:

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

<?php
/**
 * Plugin Name:       我的第一个插件
 * Plugin URI:        https://example.com/my-first-plugin
 * Description:       这是一个用于演示的 WordPress 插件。
 * Version:           1.0.0
 * Author:            你的名字
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 * Domain Path:       /languages
 */

سيتم عرض هذه المعلومات مباشرةً في صفحة إدارة “الإضافات” (Plugins) داخل واجهة ووردبريس الخلفية. من بينها،Text Domain و Domain Path مخصص للتدويل (i18n)، لجعل الإضافة تدعم عدة لغات.

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

دليل المكونات الإضافية وتنظيم الملفات

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

/my-first-plugin/
├── my-first-plugin.php      // 主文件
├── uninstall.php            // 卸载清理脚本
├── includes/                // 核心功能类与函数
│   ├── class-core.php
│   └── functions.php
├── admin/                   // 后台相关文件
│   ├── css/
│   ├── js/
│   └── class-admin.php
├── public/                  // 前台相关文件
│   ├── css/
│   ├── js/
│   └── class-public.php
├── assets/                  // 静态资源(图片等)
└── languages/               // 翻译文件(.po, .mo)

تقوم هذه البنية المنفصلة بفصل المنطق الخلفي (الخادم) عن المنطق الأمامي (الواجهة المستخدمة) والموارد المشتركة بشكل واضح، وهو ما يتوافق مع أفضل ممارسات تطوير ووردبريس.

استخدام الخطافات (hooks) والمرشحات (filters) لتوسيع الوظائف

تعتمد واجهة برمجة التطبيقات (API) لإضافات ووردبريس (WordPress Plugins API) على ما يُعرف بـ “الخطافات” (hooks)، وهي جوهر البنية المبنية على الأحداث (event-driven architecture) في ووردبريس. تنقسم الخطافات إلى نوعين: الإجراءات (actions) والمرشحات (filters). فهم هذه الخطافات واستخدامها ببراع

استخدام خطافات الإجراءات.

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

القراءة الموصى بها دليل تقنيات بناء المواقع الإلكترونية: تحليل كامل للعملية، بدءًا من التخطيط وحتى الإطلاق.

إليك مثالًا بسيطًا لإضافة سطر نصي مخصص في أسفل صفحات الموقع. أولاً، نقوم بإنشاء دالة في ملف الإضافة الرئيسي (main plugin file)، ثم نقوم بتثبيت هذه الدالة في المكان المناسب داخل النظام. wp_footer هذا الحركة مرتبطة بخطاف معين.

function myplugin_add_footer_text() {
    echo '<p style="text-align:center;">شكرًا لاستخدام هذه الإضافة!</p>';
}
add_action( 'wp_footer', 'myplugin_add_footer_text' );

عندما يصل WordPress إلى wp_footer عند تحديد الموقع (عادةً ضمن موضوع معين)… footer.php عند استدعاء الدالة من داخل الكود، فإن الدالة التي أضفناها ستتم تنفيذها.

استخدام مُعلقات الفلتر.

تُستخدم خطافات المرشحات (Filter Hooks) لتعديل البيانات التي يتم نقلها خلال عملية التنفيذ. فهي تسمح لك بالاستيلاء على المتغيرات، فحصها، وتعديلها قبل أن يتم استخدامها من قبل ووردبريس أو أي إضافات أخرى. add_filter() دالة لتطبيق عامل التصفية.

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

على سبيل المثال، تعديل الناتج الافتراضي لعنوان المقالة بإضافة بادئة معينة قبل كل عنوان. سنقوم بتثبيت الدالة (function) لتنفيذ هذا العمل. the_title هذا المرشح موجود على الخطاف (hook).

function myplugin_prefix_post_title( $title, $id = null ) {
    // 确保只在主循环且在非管理后台时添加前缀
    if ( ! is_admin() && in_the_loop() ) {
        $title = '[推荐] ' . $title;
    }
    return $title;
}
add_filter( 'the_title', 'myplugin_prefix_post_title', 10, 2 );

المعاملات (parameters) الموجودة هنا 10 إنها تمثل ترتيب الأولويات (كلما كان الرقم أصغر، كان التنفيذ أسرع).2 يعني ذلك أن الدالة التي لدينا تقبل معلمتين كوسائط (parameters).$title و $idيجب أن تعيد دالة الفلتر القيمة المعدلة.

إنشاء صفحة لإدارة الإضافات (Plugins)

تحتاج العديد من الإضافات (البرامج الإضافية) إلى خيارات تكوين في واجهة خلفية ووردبريس (WordPress backend). يتم تحقيق ذلك عادةً عن طريق إضافة صفحات إلى قائمة الإدارة (management menu). يوفر ووردبريس مجموعة واسعة من الدوال (functions) لإنشاء القوائم الرئيسية (top-level menus)، والقوائم الفرعية (submenus)، بالإضافة

القراءة الموصى بها دليل كامل: تخصيص قوالب صفحات المنتجات في WooCommerce لزيادة معدلات التحويلات في المبيعات

إضافة قائمة إدارة عليا

يمكنك استخدامه. add_menu_page() تقوم الدالة بإنشاء عنصر قائمة خلفية مستقل لإضافتك (plugin). تحتاج هذه الدالة إلى عدة معاملات لتحديد عنوان الصفحة، اسم القائمة، الصلاحيات المطلوبة، المعرف الفريد للعنصر، ودالة الاستدعاء الخاصة

يوضح الكود أدناه كيفية إضافة صفحة قائمة رئيسية بسيطة، وضمان عرضها فقط عندما يقوم المسؤول بتسجيل الدخول.

الاستضافة المشتركة InterServer
استضافة مشتركة $2.50 دولار أمريكي في الشهر، الشهر الأول $0.1 دولار أمريكي الرمز الترويجي tryinterserver، 461 نص برمجي للتطبيقات السحابية، تثبيت بنقرة واحدة.
الوظيفة myplugin_add_admin_menu() {
    add_menu_page(
        'إعدادات مكوّني الإضافي'،   // عنوان الصفحة
        'مكوّني الإضافي'،   // عنوان القائمة
        'manage_options'،   // صلاحيات الوصول (عادةً للمسؤولين)
        'myplugin-settings'،   // Slug للقائمة
        'myplugin_settings_page'،   // دالة استدعاء لعرض محتوى الصفحة
        'dashicons-admin-generic'،   // الأيقونة (باستخدام Dashicons)
        30   // موضع القائمة
    );
}
add_action( 'admin_menu'، 'myplugin_add_admin_menu' );

// تحديد محتوى صفحة الإعدادات
function myplugin_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1></h1>
        <form action="/ar/options.php/" method="post" data-trp-original-action="options.php">
            
        <input type="hidden" name="trp-form-language" value="ar"/></form>
    </div>
    أنا لا أعرف ماذا أقول.

هنا،myplugin_settings_page الدالة مسؤولة عن تحويل محتوى HTML للصفحة إلى شكل يمكن عرضه على الويب. في المشاريع العملية، ستقوم بدمج إعدادات ووردبريس (WordPress) مع واجهات برمجة التطبيقات (APIs) لتحقيق أفضل النتائج.register_setting, add_settings_section, add_settings_field) لإنشاء نماذج قابلة للحفظ.

إنشاء نموذج وحفظ الإعدادات

من أجل معالجة مدخلات المستخدمين بشكل آمن ومنظم، من الضروري استخدام واجهة برمجة التطبيقات (API) المتاحة في ووردبريس. هذه الواجهة مسؤولة عن التحقق من صحة البيانات (باستثناء طلبات نوع CES)، بالإضافة إلى تخزين البيانات في قاعدة البيانات. أولاً، يجب تسجيل خي

يوضح المثال التالي كيفية تسجيل حقل نصي وحفظ قيمته.

function myplugin_settings_init() {
    register_setting(
        'myplugin_options', // 选项组名
        'myplugin_api_key', // 选项名(存储在 wp_options 表中)
        array(
            'type' => 'string',
            'sanitize_callback' => 'sanitize_text_field', // 数据清理回调
            'default' => ''
        )
    );

    add_settings_section(
        'myplugin_section_main',
        '主要设置',
        null,
        'myplugin-settings'
    );

    add_settings_field(
        'myplugin_field_api',
        'API 密钥',
        'myplugin_field_api_cb',
        'myplugin-settings',
        'myplugin_section_main',
        array( 'label_for' => 'myplugin_api_key' )
    );
}
add_action( 'admin_init', 'myplugin_settings_init' );

function myplugin_field_api_cb() {
    $value = get_option( 'myplugin_api_key', '' );
    echo '<input type="text" id="myplugin_api_key" name="myplugin_api_key" value="' . esc_attr( $value ) . '" class="regular-text">';
}

بهذه الطريقة، ستخضع البيانات المرسلة عبر النموذج لعمليات معينة قبل أن تتم إرسالها. sanitize_text_field الدالة تقوم بتنظيف البيانات، ثم تقوم تلقائيًا بحفظها في قاعدة البيانات. wp_options في الجدول، اسم المفتاح هو… myplugin_api_key

ضمان أمان وأداء الإضافات (البرامج الإضافية).

عند تطوير الإضافات (plugins)، فإن الأمان والأداء هما من الاعتبارات الأساسية التي لا يمكن تجاهلها. قد تصبح إضافة غير آمنة مصدرًا للثغرات في موقع ووردبريس بأكمله.

التحقق من صحة البيانات وتهيئتها للاستخدام (Data Validation and Escaping)

لا تثق أبدًا بما يدخله المستخدمون. يجب التحقق من صحة جميع البيانات القادمة من مصادر خارجية (مثل النماذج، عناوين URL، قواعد البيانات)، وتنقيتها، وتهريبها (Escaping) قبل عرضها أو استخدامها.

  • التحقق: فحص ما إذا كانت البيانات تتوافق مع الصيغة المتوقعة (مثل ما إذا كانت عناوين بريد إلكتروني أو أرقام).
  • التنظيف: إزالة الأحرف أو المحتويات غير المسموح بها من البيانات (مثل إزالة علامات HTML).
  • التهريب (Escaping): عملية ترميز البيانات عند إرسالها إلى HTML أو JavaScript أو عناوين URL (URLs) لمنع هجمات الكود الخبيث المتعدد المواقع (Cross-Site Scripting Attacks).

يوفر ووردبريس عددًا كبيرًا من الدوال المساعدة (helper functions)، مثل:
* sanitize_text_field(): تنظيف سلسلة نصية.
* esc_html(): تحويل النص إلى تنسيق HTML بحيث يتم عرضه بشكل صحيح في المتصفح.
* esc_url()ترميز عنوان URL (URL Encoding).
* wp_kses_post()يُسمح باستخدام علامات HTML من خلال مرشح تصفية محتوى المقالات.

تحميل السكريبتات والأنماط بشكل صحيح

من أجل عدم التأثير على سرعة تحميل الصفحة وتجنب حدوث تعارضات، يجب تسجيل ملفات JavaScript وCSS بشكل صحيح وترتيب تحميلها باستخدام الطرق المتاحة في ووردبريس. wp_enqueue_script() و wp_enqueue_style() دالة.

يوضح الكود أعلاه كيفية تحميل ملفات JS و CSS الخاصة فقط على صفحة إدارة الإضافة نفسها.

function myplugin_load_admin_assets( $hook ) {
    // 只在我们插件的设置页加载
    if ( $hook != 'toplevel_page_myplugin-settings' ) {
        return;
    }
    wp_enqueue_style(
        'myplugin-admin-css',
        plugins_url( 'admin/css/style.css', __FILE__ ),
        array(),
        '1.0.0'
    );
    wp_enqueue_script(
        'myplugin-admin-js',
        plugins_url( 'admin/js/script.js', __FILE__ ),
        array( 'jquery' ), // 声明依赖 jQuery
        '1.0.0',
        true // 在页脚加载
    );
}
add_action( 'admin_enqueue_scripts', 'myplugin_load_admin_assets' );

هذه الطريقة تضمن تحميل الموارد فقط عند الحاجة إليها، وتتعامل مع علاقات التبعية (مثل jQuery) بشكل صحيح، كما أن معاملات أرقام الإصدارات تساعد في إدارة كاش المتصفح.

الملخصات

تطوير إضافات ووردبريس (WordPress plugins) هو عملية منهجية تبدأ باحترام الهيكل القياسي للملفات ورؤوس المعلومات (information headers). جوهر هذه العملية يكمن في الاستخدام الاحترافي لميزات “الأفعال” (actions) و“خطافات المرشحات” (filter hooks) لدمج الإضافة بشكل غير متدخل في دورة حياة ووردبريس (WordPress’s lifecycle). إنشاء واجهة إدارة واضحة للإضافة في الواجهة الخلفية، بالإضافة إلى الالتزام الصارم بواجهة برمجة التطبيقات الخاصة بالإعدادات (settings API)، يمكن أن يحسن بشكل كبير من تجربة المستخدم وأمان البيانات. وأخيرًا، اعتبار معايير الأمان (مثل التحقق من البيانات، وتنظيفها، وتهيئتها بشكل صحيح) والأداء (تحميل الموارد حسب الحاجة) من الأسس الأساسية للتطوير، هو السبيل الوحيد لبناء إضافات عالية الجودة وموثوقة. باتباع هذه الخطوات وأفضل الممارسات، ستتمكن من إنشاء إضافات ووردبريس قوية وآمنة وسهلة الصيانة.

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

ما هي المعرفة الأساسية المطلوبة لتطوير إضافات (Plugins) لبرنامج ووردبريس (WordPress)؟

لتطوير إضافات لووردبريس (WordPress plugins)، من الضروري أن تكون على دراية بلغة البرمجة PHP، حيث تتكون الإضافات في الأساس من كود PHP. بالإضافة إلى ذلك، يجب أن يكون لديك معرفة أساسية بلغات HTML وCSS وJavaScript لبناء واجهات المستخدم الأمامية وتحقيق التفاعلات بينها. والأهم من ذلك كله، يجب أن تفهم البنية الأساسية لووردبريس، وخاصة نظام الأحداث والمرشحات (hooks and filters)، ومستويات قوالب المواقع (theme templates)، بالإضافة إلى عمليات التعامل مع قاعدة البيانات (database operations). WP_Query و wpdb فئة).

كيف يمكن تصحيح أخطاء البرامج الإضافية (الإضافات) لمنصة ووردبريس (WordPress) أثناء عملية التطوير؟

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

كيف يجب على الإضافات (plugins) التعامل مع عمليات قاعدة البيانات (database operations)؟

لتخزين البيانات البسيطة، يُنصح باستخدام واجهة برمجة التطبيقات (API) المتاحة في ووردبريس (WordPress).add_option, get_option, update_optionيتم استخدام هذا النظام لتخزين بيانات الأزواج المكونة من مفتاح وقيمة. بالنسبة للبيانات المنظمة التي تتطلب تخصيص هيكل الجدول، يمكنك القيام بذلك عند تفعيل الإضافة (البرنامج الإضافي). dbDelta() توجد دوال مخصصة لإنشاء أو تحديث هياكل الجداول بشكل آمن، وهذا يتطلب اتباع تنسيق SQL معين. يجب استخدام هذه الدوال بشكل إلزامي. $wpdb يتم إجراء جميع عمليات الاستعلام عن البيانات من خلال الكائن العالمي (global object)، ويتم استخدام طريقة `prepare` الخاصة به لمنع هجمات الاستغلال الخبيث للكود (SQL injection attacks).

كيف يمكنني أن أجعل إضافتي تدعم التدويل متعدد اللغات؟

تستخدم ووردبريس إطار عمل GNU gettext لتحقيق التدويل (الترجمة إلى لغات أخرى). يجب عليك تعيين الإعدادات الصحيحة في ملف الرأس (header file) الرئيسي للإضافة (plugin). Text Domain و Domain Pathفي الكود، قم بوضع جميع النصوص التي تحتاج إلى ترجمة داخل علامات خاصة (مثل `%s`, `%1$s`, `%{var}`). __()(للاستخدام مع القيم المرجعية) أو _e()(يُستخدم للإخراج المباشر) يتم تغليف الدوال المتعلقة بالترجمة داخل هذا الإطار، ثم يتم استخدام أداة مثل Poedit لمسح الكود المصدري وإنشاء ملفات الترجمة الناتجة. .pot ملفات القوالب، واستنادًا إليها يتم إنشاء نسخ بلغات مختلفة. .po و .mo قم بترجمة الملف وضعه في المكان المحدد. Domain Path تحت القائمة.

بعد الانتهاء من تطوير الإضافة (البرنامج الإضافي)، كيف يمكنني نشرها في الدليل الرسمي؟

أولاً، تأكد من أن الإضافة الخاصة بك تتوافق تمامًا مع الدليل الرسمي لتطوير الإضافات ومتطلبات التقديم، وذلك يشمل معايير الكود والأمان واتفاقية الترخيص (يجب أن تكون متوافقة مع GPL). بعد ذلك، قم بإنشاء حساب على موقع WordPress.org وقدم طلبًا لتقديم الإضافة. بعد الموافقة على الطلب، يمكنك استخدام أداة Subversion لتحميل كود الإضافة إلى المستودع الرسمي المخصص لها. بعد التقديم، ستحتاج إلى ملء صفحة وصف الإضافة، والتي تشمل شعار الإضافة وصورة الإيقونة ولقطات شاشة وشرحًا مفصلًا، حتى يتمكن المستخدمون من مشاهدتها وتنزيلها.