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

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

أساسيات تطوير الإضافات في ووردبريس والتحضير للبيئة.

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

بيئة التطوير هي الأساس الذي يضمن العمل الفعال. من الضروري إنشاء بيئة اختبار محلية تكون متطابقة قدر الإمكان مع البيئة الإلكترونية الحقيقية. يُنصح باستخدام حزم خدمات الخوادم المحلية مثل XAMPP، MAMP، أو Local by Flywheel. بالإضافة إلى ذلك، تأكد من أن محرر الكود الخاص بك أو بيئة التطوير المتكاملة (IDE) تدعم تمييز أسلوب كتابة لغة PHP وإمكانيات التصحيح الخاطئ (التصحيح التلقائي)، مثل VS Code،PhpStorm، أو Sublime Text. قم أيضًا بتفعيل الميزات المتاحة في منصة WordPress لتسهيل عملية التطوير.WP_DEBUGالأنماط مهمة للغاية في مرحلة التطوير لتحديد الأخطاء؛ يمكنك استخدامها في موقع الويب الخاص بك…wp-config.phpتم تحديد ذلك في الملف عن طريق التعريفات.define('WP_DEBUG', true);قم بتفعيله.

قم بإنشاء ملف الإضافة (plugin) الخاص بك الأول.

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

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

كتابة ملف رئيسي للإضافة (plugin) ورأس التعليقات (comment header)

أولاً، في مجلد تثبيت WordPress الخاص بك،wp-content/pluginsداخل المجلد، قم بإنشاء مجلد جديد وأطلق عليه الاسم التالي:my-first-pluginداخل هذا المجلد، قم بإنشاء ملف PHP وأطلق عليه نفس الاسم.my-first-plugin.php

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

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

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

بعد حفظ الملف، ادخل إلى صفحة “الإضافات” (Plugins) في واجهة إدارة ووردبريس (WordPress Admin). يجب أن ترى إضافتك الأولى مدرجة في قائمة الإضافات. قم بتفعيلها الآن؛ على الرغم من أن الإضافة لن تقوم بتنفيذ أي وظيفة بعد، إلا أنها تم تحميلها بنجاح في ووردبريس.

تنفيذ وظيفة إشعارات أساسية في الخلفية

الآن، سنقوم بإضافة أول ميزة لهذا الإضافة: عرض رسالة ترحيب في الجزء العلوي من واجهة الإدارة. سنستخدم ميزات ووردبريس (WordPress) لتحقيق ذلك.admin_notices“Hook.” في ملف الإضافة الرئيسي الذي تمت مناقشته للتو، أضف الكود التالي أسفل رأس التعليقات:

// 在管理后台显示自定义通知
function mfp_show_admin_notice() {
    ?&gt;
    <div class="notice notice-success is-dismissible">
        <p><?php _e( '欢迎使用“我的第一个插件”!', 'my-first-plugin' ); ?></p>
    </div>
    &lt;?php
}
add_action( &#039;admin_notices&#039;, &#039;mfp_show_admin_notice&#039; );

شرح الكود: لقد قمنا بإنشاء شيء يُسمى…mfp_show_admin_noticeهذه الدالة تقوم بإنتاج قطعة من كود الإشعارات (HTML) التي تتوافق مع تنسيق واجهة برمجة ووردبريس الخلفية (WordPress backend). يمكن استخدامها لعرض رسائل إشعارات أو تنبيهات داخل واجهة ووردبريس بشكل متناسق_e()تم إنشاء هذه الدالة لدعم عمليات الترجمة والتكييف مع لغات مختلفة في المستقبل (i18n – Internationalization). وأخيرًا، تم…add_action()تقوم الدالة بتثبيت الدالة المخصصة الخاصة بنا في نظام ووردبريس (WordPress).admin_noticesعلى هذا “الخطاف”… بعد حفظ الملف، قم بتحديث صفحة واجهة ووردبريس الخلفية (الخلفية)، وسوف ترى رسالة تنبيه خضراء تشير إلى نجاح العملية.

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

التطوير المتعمق للوظائف الأساسية للإضافات (Plugins)

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

استخدم المرشحات لتعديل محتوى المقال.

يوفر ووردبريس عددًا كبيرًا من “الفلاتر (Filters)” لتعديل أنواع مختلفة من البيانات. ومن أجل إضافة نص إلى نهاية محتوى المقال، سنستخدم أحد هذه الفلاتر.the_contentمرشحات (Filters): أضف الدالة الجديدة التالية إلى الملف الرئيسي للإضافة (plugin main file):

// 在文章内容末尾添加自定义文本
function mfp_append_to_content( $content ) {
    // 确保只在主循环的单篇文章页面执行
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $custom_text = '<div class="my-plugin-footer"><p>شكرًا لقراءتكم! تم تقديم هذا المقال من قبل “أول إضافة لي” (My First Plugin).</p></div>';
        $content .= $custom_text;
    }
    return $content;
}
add_filter( 'the_content', 'mfp_append_to_content' );

هذه الدالة تتلقى البيانات الأصلية…$contentنضمن من خلال التحكم في الشروط أن يتم إضافة نص HTML المخصص لدينا فقط على صفحات المقالات الفردية وعندما يكون ذلك ضمن الاستعلام الرئيسي، ثم نعيد إرسال المحتوى المعدل. هذه الطريقة غير تدخلية ولا تغير المحتوى الأصلي في قاعدة البيانات.

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

إنشاء صفحة إعدادات إدارية بسيطة

لكي يتمكن المستخدمون من تخصيص النص الذي يتم إضافته في نهاية المقالات، نحتاج إلى إنشاء صفحة إعدادات للإضافة. هذا يتطلب عدة خطوات: تسجيل القائمة (menu)، إنشاء دوال استدعاء للصفحات (page callback functions)، ومعالجة بيانات النموذج (form data).

أولاً، استخدم.admin_menuيتم إضافة صفحة قائمة فرعية إلى الخطاف (hook):

// 添加插件设置菜单到后台
function mfp_add_admin_menu() {
    add_options_page(
        '我的第一个插件设置', // 页面标题
        '我的插件设置',       // 菜单标题
        'manage_options',    // 权限要求
        'my-first-plugin',   // 菜单slug
        'mfp_options_page_html' // 显示页面内容的回调函数
    );
}
add_action( 'admin_menu', 'mfp_add_admin_menu' );

بعد ذلك، قم بتعريف دالة الاستدعاء العكسي (callback function).mfp_options_page_htmlلعرض صفحة إعدادات HTML، نحتاج إلى استخدام نموذج الاستمارة المناسب. في الوقت نفسه، يجب علينا استخدام واجهة برمجة التطبيقات (API) الخاصة بإعدادات WordPress لتسجيل الخيارات بشكل آمن، وحفظها، واسترجاعها. من أجل البساطة، إليكم نسخة مبسطة من

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

// 设置页面的HTML内容
function mfp_options_page_html() {
    // 检查用户权限
    if ( !current_user_can( 'manage_options' ) ) {
        return;
    }
    ?&gt;
    <div class="wrap">
        <h1></h1>
        <form action="/ar/options.php/" method="post" data-trp-original-action="options.php">
            <?php
            // 输出设置字段、非ce等安全字段
            settings_fields( 'mfp_options_group' );
            do_settings_sections( 'my-first-plugin' );
            submit_button( '保存设置' );
            ?>
        <input type="hidden" name="trp-form-language" value="ar"/></form>
    </div>
    <?php
}

// 初始化插件设置
function mfp_settings_init() {
    // 注册一个设置
    register_setting( 'mfp_options_group', 'mfp_footer_text' );

// 添加一个设置区域
    add_settings_section(
        'mfp_section',
        '自定义文本设置',
        null,
        'my-first-plugin'
    );

// 向区域中添加字段
    add_settings_field(
        'mfp_field_footer',
        '文章页脚文本',
        'mfp_field_footer_html',
        'my-first-plugin',
        'mfp_section'
    );
}
add_action( 'admin_init', 'mfp_settings_init' );

// 渲染文本输入字段
function mfp_field_footer_html() {
    $option = get_option( 'mfp_footer_text', '感谢阅读!本文由“我的第一个插件”为您呈现。' );
    ?>
    <input type='text' name='mfp_footer_text' value='<?php echo esc_attr( $option ); ?>' class='regular-text'>
    <p class="description">سيتم عرض المحتوى المدخل هنا في نهاية كل مقال.</p>
    أنا لا أعرف ماذا أقول.

أخيرًا، قم بتعديل المحتوى السابق.mfp_append_to_contentFunction: To enable it from the database optionsmfp_footer_textيتم قراءة النص من الملفات، بدلاً من استخدام نصوص محفوظة بشكل ثابت (مُكدسة مسبقًا في الكود).

أمان الإضافات، تحسين أدائها، والاستعداد لنشرها

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

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

اتبع أفضل الممارسات الأمنية.

يجب تهريب أو التحقق من جميع المدخلات من المستخدمين قبل عرضها في المتصفح أو تخزينها في قاعدة البيانات. عند العرض، يتم استخدام…esc_html()esc_attr()esc_url()وظائف مثل هذه. عند معالجة إرسال النماذج أو طلبات AJAX، يتم استخدامها.wp_verify_nonce()وcheck_admin_referer()للتحقق من شرعية الطلبات ومنع هجمات تزوير الطلبات بين المواقع (Cross-Site Request Forgery – CSRF)، لا يجب أبدًا الوثوق مباشرة بأي معلومات أو بيانات يتم إرسالها من المستخدم.$_GET$_POSTأو$_REQUESTالبيانات الموجودة فيه.

تحقيق الدعم الدولي (Internationalization)

لكي يتمكن المستخدمون في جميع أنحاء العالم من استخدام الإضافة، من الضروري ترجمة جميع النصوص الموجهة للمستخدمين في الكود إلى لغاتهم المحلية. لقد قمنا بذلك بالفعل في الأمثلة السابقة._e()يجب أن تكون هناك دالة لإخراج النص المترجم. بالإضافة إلى ذلك، يجب عليك تحديد ذلك في تعليقات رأس الإضافة (plugin comments).Text DomainوDomain Path
عند تهيئة المكون الإضافي (plugin)، مثلاً عن طريق…plugins_loaded(الخطاف)، استخدمه.load_plugin_textdomain()دالة لتحميل ملفات اللغة:

function mfp_load_textdomain() {
    load_plugin_textdomain( 'my-first-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}
add_action( 'plugins_loaded', 'mfp_load_textdomain' );

ثم، يمكنك استخدام أداة مثل Poedit لاستخراج السلاسل النصية من مصدر كود الإضافة (البرامج الإضافية).__()_e()(النصوص المحاطة بوظائف مثل الانتظار، إلخ)، يتم إنشاؤها..potملف قالب، مخصص لمساعدة المترجمين على القيام بعمليات الترجمة..poو.moملف.

تنظيم الكود واعتبارات الأداء

مع نمو وظائف الإضافات (البرامج الإضافية)، لا ينبغي تجميع كل الكود في الملف الرئيسي. الطريقة المناسبة هي تقسيم الكود حسب وحدات الوظيفية إلى ملفات منفصلة..phpفي الملفات، يتم تضمين هذه الملفات الفرعية بشكل انتقائي من خلال الملف الرئيسي. على سبيل المثال، يمكن إنشاء…includes/admin/يحتوي المجلد على الكود المتعلق بالواجهة الخلفية (الخادم).includes/public/يُستخدم هذا المكان لتخزين الكود المتعلق بالجزء الأمامي (الفرنت إند) من التطبيق.includes/class-*.phpتخزين تعريفات الفئات (Class Definitions).
بالنسبة للعمليات التي تتطلب موارد كبيرة، يُنصح باستخدام واجهة برمجة التطبيقات الخاصة بالذاكرة المؤقتة (Transients API) في ووردبريس لتخزين نتائج الاستعلامات التي تستغرق وقتًا طويلاً، أو استخدام واجهة برمجة التطبيقات الخاصة بالمهام المجدولة (Cron API) لمعالجة المهام غير الملحة في الخلفية. تأكد من أن الإضافات (Plugins) تتمكن من الإزالة بشكل صحيح عند تعطيلها، وregister_uninstall_hook()قم بتنظيف البيانات والخيارات التي تم إنشاؤها، للحفاظ على نظافة الموقع.

الملخصات

من خلال هذا الدليل، أكملنا عملية بناء إضافة (plugin) لووردبريس (WordPress) شاملة وكاملة الوظائف من الصفر. بدأنا بفهم الهيكل الأساسي للإضافة وإعداد بيئة التطوير الخاصة بها، ثم قمنا بإنشاء الملف الرئيسي الذي يحتوي على رؤوس التعليقات القياسية. بعد ذلك، قمنا بتنفيذ الخطوات اللازمة لتشغadmin_noticesوthe_contentهذان الخياران الأساسيان (الـ “hooks”) يسمحان بتنفيذ إشعارات في الخلفية وعرض نصوص في أسفل صفحات المقالات. ومن أجل تحسين جدوى الإضافة، قمنا بإدخال واجهة برمجة التطبيقات (API) الخاصة بـ WordPress، مما أتاح للمستخدمين إنشاء صفحات إدارة لتخصيص النصوص حسب رغبتهم. وأخيرًا، ناقشنا مواضيع مهمة جدًا في تطوير الإضافات، مثل الممارسات الأمنية السليمة، ودعم الترجمة (الدولية)، وتحسين تنظيم الكود. هذه العملية توضح بشكل واضح النمط الأساسي لتطوير إضافات WordPress: استخدام الـ “action hooks” والـ “filters” لإضافة الميزات، واتباع معايير API عند إنشاء واجهات المستخدم، ووضع الأمان وسهولة الصيانة في المقام الأول دائمًا. بمجرد إتقان هذه الأساسيات، ستكون قادرًا على استكشاف عالم الإضافات الأكثر تعقيدًا.

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

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

يجب أن تمتلك أساسًا متينًا في برمجة PHP، حيث يتم كتابة كود الإضافات بشكل رئيسي بلغة PHP. بالإضافة إلى ذلك، من الضروري أن تكون على دراية أساسية بلغات HTML وCSS وJavaScript للتعامل مع عرض المحتوى والتفاعلات الأمامية للموقع. من المهم جدًا أن تكون على دراية بالمفاهيم الأساسية لبرنامج WordPress، مثل القوالب (Themes)، أنواع المقالات (Article Types)، وأنظمة التصنيف (Taxonomies)، وخاصة نظام الأدوات (Hooks) في WordPress، والذي يشمل الإجراءات (Actions) والمرشحات (Filters).

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

في أبسط الحالات، يمكن أن يحتوي الإضافة (plugin) على ملف PHP واحد فقط. ولكن يجب أن يتضمن هذا الملف في بدايته تعليمات توضيحية خاصة بالإضافة تتوافق مع معايير ووردبريس (WordPress Plugin Headers)، وهي التعليمات الموجودة في مثالنا.Plugin NameDescriptionهذه الحقول هي المعيار الوحيد الذي يستخدمه ووردبريس للتعرف على الإضافة وعرضها في قائمة إدارة الإضافات.

###
كيف يجب أن أسمي دوال ومتغيرات الإضافة (البرامج الإضافية) الخاصة بي؟

لتجنب حدوث تعارضات مع كود نواة ووردبريس (WordPress Core)، أو القوالب (Themes)، أو الإضافات (Plugins) الأخرى، يجب أن تحمل جميع الدوال المخصصة (Custom Functions)، والفئات (Classes)، والمتغيرات (Variables)، والثوابت (Constants) بادئات فريدة. يُنصح عمومًا باستخدام بادئات مرتبطة باختصارات أو أسماء الإضافات؛ كما هو الحال في مثالنا.mfp_(نيابة عن My First Plugin) يجب أن تتبع أسماء الفئات (classes) نفس القاعدة، ويفضل استخدام أسماء كاملة ومعنوية قدر الإمكان.

###
هل يتم تنظيف الجداول أو الخيارات في قاعدة البيانات التي تم إنشاؤها داخل الإضافة بعد حذف الإضافة نفسها؟

بشكل افتراضي، لا يحدث ذلك. إذا قمت بذلك عن طريق…add_option()update_option()الخيارات التي تم إنشاؤها، أو الجداول البيانية المخصصة، قد تبقى موجودة في قاعدة البيانات عندما يقوم المستخدم بحذف ملفات الإضافة من خلفية ووردبريس. من أجل توفير تجربة إلغاء تثبيت نظيفة، يجب عليك استخدام…register_uninstall_hook()دالة لتسجيل دالة تنفيذية للتنظيف (callback function)، حيث تقوم هذه الدالة بحذف جميع الخيارات المتعلقة بالإضافات (plugins)، وجداول قواعد البيانات (database tables)، والذاكرة المؤقتة (temporary cache).

###
كيف يمكنني جعل إضافتي متوافقة مع المزيد من إصدارات ووردبريس (WordPress)؟

تجنب استخدام إصدارات PHP أو وظائف خاصة بـ WordPress حديثة جدًا في الكود. قبل استخدام أي وظيفة أو فئة أو هاك (hook)، قم بمراجعة الوثائق الرسمية لتعرف إصدار WordPress الذي تم فيه إضافتها. يمكنك القيام بذلك عن طريق وضع تعليقات في رأس ملف الإضافة الرئيسي (main file of the plugin).Requires at least:يُحدد هذا الحقل الإصدار الأدنى من ووردبريس (WordPress) المدعوم. في الكود، يمكن استخدامه بالاقتران مع جملات شرطية (conditional statements) لتطبيق تعديلات معينة حسب إصدار ووردبريس المستخدم.function_exists()أوclass_exists()قم بالفحص لتقديم خطة للترقية الهرمية (التخفيض في مستوى الأداء) أو رسالة تنبيه ودية.