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

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

المكونات الأساسية لإضافات ووردبريس (WordPress Plugins)

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

تعتبر تعليقات رأس الإضافة (plugin header comments) ذات أهمية قصوى، حيث تستخدم تنسيقًا محددًا لإعلام نظام ووردبريس (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 main file).Plugin Name هذه الحقول إلزامية، بينما البقية اختيارية. عندما يقوم WordPress بمسح مجلد الإضافات، فإنه يقوم بقراءة هذه المعلومات لعرض قائمة الإضافات في واجهة الإدارة الخلفية.

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

بالإضافة إلى الملف الرئيسي، يحتوي الإضافة (plugin) الشاملة من الناحية الوظيفية عادةً على ملفات ومجلدات أخرى، مثل تلك المخصصة لتخزين موارد JavaScript وCSS. assets مجلدات، المستخدمة للترجمة. languages مجلد، يُستخدم لتخزين ملفات الكلاسات (class files). includes مجلدات، بالإضافة إلى ملفات القوالب المستخدمة في العرض الأمامي (الواجهة الخاصة بالمستخدم)، وغيرها. إن وجود هيكل مجلدات جيد يعتبر الأساس الذي يضمن سهولة صيانة الإضافات (البرامج الإضافية) وقابليت

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

فهم الآليات الأساسية لـ WordPress: الخطافات (Hooks)

الفلسفة الأساسية لتطوير إضافات ووردبريس (WordPress plugins) تقوم على مبدأ “الخطافات والاستدعاءات العكسية” (Hooks and Callbacks). تسمح هذه الخطافات للمطورين بإضافة كودهم الخاص في أوقات محددة أثناء تنفيذ الكود الأساسي لووردبريس، مما يتيح تعديل أو تحسين الوظائف الافتراضية دون الحاجة إلى تغيير الملفات الأساسية مباشرة. وهذا يضمن بقاء الكود الأساسي نقيًا ويحافظ على أمان تحديثات الإضافات.

تنقسم الخطافات (hooks) بشكل أساسي إلى نوعين: خطافات الإجراءات (action hooks) وخطافات المرشحات (filter hooks).

استخدام خطافات الأفعال (Action Hooks)

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

على سبيل المثال، إذا أردنا إضافة بيان حقوق النشر تلقائيًا في نهاية كل مقال، فيمكننا استخدام هذه الطريقة. the_content هذا “خطاف الإجراء” (Action Hook)، على الرغم من أنه غالبًا ما يُستخدم كفلتر، إلا أنه يوضح مفهوم الإجراءات في هذا المثال. مثال أكثر تمثيلاً على ذلك هو تنفيذ عملية معينة عند تهيئة ووردبريس (WordPress)

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

function myplugin_setup() {
    // 初始化插件,例如创建数据库表
}
add_action( 'init', 'myplugin_setup' );

يشير الكود المذكور أعلاه إلى أنه عندما يقوم ووردبريس (WordPress) بتنفيذ… init عند تنفيذ هذا الإجراء، سيتم تشغيل ما قمنا بتعريفه في نفس الوقت. myplugin_setup دالة.

استخدام خطافات المرشحات (Filter Hooks)

تُستخدم “خطافات المرشحات” (filter hooks) لتعديل البيانات. فهي تقبل متغيرًا ما وتعيد متغيرًا معدلًا كنتيجة لذلك. يستخدم المطورون هذه الخطافات لتنفيذ عمليات التحرير أو التعديل على البيانات بشكل add_filter() هذه الدالة تُستخدم لتثبيت دوال تصفية مخصصة. إنها الطريقة الأكثر شيوعًا لتعديل محتوى المقالات، وعناوينها، وروابطها، وغيرها من البيانات.

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

استضافة.كوم استضافة مشتركة
أداء عالٍ مع وحدات المعالجة المركزية AMD EPYC، ووحدات تخزين NVMe SSD وLiteSpeed، ودعم داخلي متخصص على مدار الساعة طوال أيام الأسبوع، وتدابير أمنية متقدمة بما في ذلك SSL، وقوة الغاشمة، والحماية من البرامج الضارة والحماية من DDoS، وتوفير ما يصل إلى 731 تيرابايت 4 تيرابايت
function myplugin_add_copyright( $content ) {
    if ( is_single() ) {
        $content .= '<p>جميع حقوق هذا المقال محفوظة لهذا الموقع، يرجى ذكر المصدر عند إعادة نشره.</p>';
    }
    return $content;
}
add_filter( 'the_content', 'myplugin_add_copyright' );

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

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

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

إضافة عنصر من القائمة الرئيسية

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

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

فيما يلي مثال على كود لإنشاء صفحة إدارية عليا بسيطة:

function myplugin_add_admin_menu() {
    add_menu_page(
        '我的插件设置',          // 页面标题
        '我的插件',              // 菜单标题
        'manage_options',       // 所需权限(管理员)
        'myplugin-settings',    // 菜单别名(URL中的slug)
        'myplugin_settings_page', // 用于输出页面内容的回调函数
        'dashicons-admin-generic', // 图标(使用Dashicons)
        80                      // 菜单位置
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

// 定义输出页面内容的回调函数
function myplugin_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1>إعدادات الإضافة الخاصة بي</h1>
        <form method="post" action="/ar/options.php/" data-trp-original-action="options.php">
            <?php
            settings_fields( 'myplugin_settings_group' );
            do_settings_sections( 'myplugin-settings' );
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="ar"/></form>
    </div>
    أنا لا أعرف ماذا أقول.

يبدأ هذا الكود أولاً بـ… add_action قم بتثبيت الدالة المسؤولة عن إضافة القائمة (menu) على المكان المناسب في الكود. admin_menu “Hook”: يتم تنفيذ هذا الكود عندما يقوم الخادم الخلفي بتحميل القائمة. myplugin_add_admin_menuقم بتسجيل قائمة رئيسية جديدة باسم “إضافاتي” (My Plugins). بعد النقر على هذه القائمة، سيقوم نظام ووردبريس (WordPress) بتنفيذ الإجراءات اللازمة. myplugin_settings_page دالة لتقديم محتوى الصفحة.

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

تعيين تخزين الحقول والخيارات

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

أولاً، نحتاج إلى تسجيل خيار تكوين، وكتلة إعدادات، بالإضافة إلى الحقول المحددة:

function myplugin_settings_init() {
    // 1. 注册一个设置选项到数据库
    register_setting( 'myplugin_settings_group', 'myplugin_options' );

// 2. 在页面内添加一个设置区块
    add_settings_section(
        'myplugin_section_main',
        '主要设置',
        null,
        'myplugin-settings'
    );

// 3. 在区块内添加一个具体的字段
    add_settings_field(
        'myplugin_field_text',
        '示例文本输入',
        'myplugin_field_text_render', // 渲染字段HTML的回调函数
        'myplugin-settings',
        'myplugin_section_main'
    );
}
add_action( 'admin_init', 'myplugin_settings_init' );

// 定义字段的HTML输出
function myplugin_field_text_render() {
    $options = get_option( 'myplugin_options' );
    $value = $options['text_field'] ?? '';
    ?>
    <input type='text' name='myplugin_options[text_field]' value='<?php echo esc_attr( $value ); ?>'>
    <?php
}

من خلال هذا الجزء من واجهة برمجة التطبيقات (API)، بعد إرسال النموذج، سيتم حفظ البيانات تلقائيًا في… wp_options العنصر المسمى في الجدول هو… myplugin_options في سجلات (مصفوفة مُهيكلة بشكل معين). يمكن للمطورين استخدامها. get_option( ‘myplugin_options’ ) يمكن الحصول على هذه القيم بشكل آمن في أي جزء من الجزء الأمامي (العميل) أو الجزء الخلفي (الخادم) للنظام.

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

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

التحقق من صحة البيانات، تهريب القيم (escaping values)، وتنظيف البيانات (data cleaning)

جميع البيانات القادمة من المستخدمين أو المصادر الخارجية غير موثوقة. عند إرسال البيانات إلى المتصفح (الجزء الأمامي من التطبيق)، يجب تنفيذ عمليات تهريب (escaping) لمنع هجمات الكود الخبيث عبر المواقع المختلفة (Cross-Site Scripting attacks)؛ وعند كتابة البيانات في قاعدة البيانات (الجزء الخل

يوفر ووردبريس عددًا كبيرًا من الدوال المساعدة. بالنسبة للمحتوى الذي يتم إخراجه إلى HTML، يمكن استخدام هذه الدوال لتنفيذ مهام معينة بشكل أكثر سهولة وكفاءة. esc_html(), esc_attr(), esc_url() وظائف مثل… بالنسبة للقيم المُنتجة والمُخزنة في متغيرات JavaScript، يتم استخدام… wp_json_encode()في عمليات قاعدة البيانات، يجب دائمًا استخدام… $wpdb->prepare() قم بإجراء استعلامات معيارية (parametric queries)، أو استخدم أدوات مثل… sanitize_text_field(), intval() دوال مثل هذه تقوم بتنظيف المدخلات (البيانات المقدمة من المستخدم).

// 不安全的做法
echo $_GET['user_input'];

// 安全的做法:输出到HTML内容
echo esc_html( $_GET['user_input'] );

// 安全的做法:用于HTML属性
$url = esc_url( $_GET['url'] );
echo "<a href='/ar/$url/'>رابط</a>";

// 安全的做法:清理后存入数据库
$clean_title = sanitize_text_field( $_POST['title'] );
update_post_meta( $post_id, ‘title’, $clean_title );

الاستعداد للتدويل والتحليل المحلي (Internationalization and Localization Preparation)

لكي يتمكن المستخدمون في جميع أنحاء العالم من استخدام الإضافة، من الضروري القيام بالتحضيرات اللازمة لدعم اللغات الدولية. هذا يعني أن جميع النصوص الموجهة للمستخدمين لا يجب أن تكون مكتوبة بشكل ثابت (مُحفوظة في ال

يستخدم WordPress إطار عمل GNU gettext. في الكود، يتم استخدام هذا الإطار لإدارة النصوص المتعددة اللغات بشكل فعال. __() اقوم بترجمة وإرجاع السلسلة، باستخدام _e() قم بترجمة النص التالي وأظهره مباشرة كنص عادي. بالإضافة إلى ذلك، يجب تعريف المتغيرات المستخدمة في رأس البرنامج الإضافي (plugin header) عبر التعليقات. Text Domainواستخدمه أثناء تحميل الإضافة. load_plugin_textdomain() دالة لتحميل ملفات الترجمة.

// 定义可翻译的字符串
$greeting = __( ‘Hello, World!', ‘my-first-plugin’ );
_e( ‘Settings saved successfully!', ‘my-first-plugin’ );

// 在插件初始化时加载翻译
function myplugin_load_textdomain() {
    load_plugin_textdomain( ‘my-first-plugin’, false, dirname( plugin_basename( __FILE__ ) ) . ‘/languages/’ );
}
add_action( ‘init’, ‘myplugin_load_textdomain’ );

يحتاج المطورون إلى استخدام أدوات مثل Poedit لإنشاء المحتوى المطلوب. .pot ملفات القوالب، المخصصة لمترجمين لإنشاء نسخ بلغات مختلفة. .po والمُجمَع (المُترجم) بعد عملية التجميع (الترجمة). .mo الملفات: يجب وضع ملفات اللغات المعدة في المكان المخصص للإضافة (البرنامج الإضافي). /languages/ داخل المجلد… هذه هي الخطوة الحاسمة التي تمكّن الإضافات (البرامج الإضافية) من دخول السوق الدولية.

الملخصات

تطوير إضافات ووردبريس (WordPress plugins) هو عملية تحويل الأفكار إلى وظائف عملية، وجوهر هذه العملية يكمن في فهم واستخدام نظام الخطافات (hooks) ببراعة. يبدأ الأمر بإنشاء ملف رئيسي يحتوي على تعليقات الرأس (header comments) الصحيحة، ثم يتم التدخل في سير التنفيذ عبر خطافات الأفعال (action hooks)، وتعديل مخرجات البيانات باستخدام خطافات المرشحات (filter hooks). يمكن استخدام واجهة برمجة التطبيقات (Settings API) المتاحة في ووردبريس لإنشاء واجهات إدارة خلفية بطريقة آمنة وموحدة. كما أن الالتزام الصارم بمعايير الأمان (مثل التحقق من البيانات، وتنفيذ عمليات التهريب، وتنظيف البيانات) بالإضافة إلى معايير التدويل (internationalization) ضروري لجعل الإضافة ناضجة ومستقرة ومنتشرة على نطاق واسع. تذكر أن الإضافات الممتازة ليست فقط قوية من حيث الوظائف، بل هي أيضًا آمنة وفعالة وسهلة الاستخدام من قبل الم

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

ما هي الحد الأدنى لعدد الملفات المطلوبة لإنشاء إضافة (plugin)؟

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

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

يُنصح بذلك في بيئة التطوير. wp-config.php قم بتفعيل وضع التصحيح الخاص بووردبريس (WordPress Debug Mode) داخل الملف. WP_DEBUG تم تعيين الثابت على قيمة trueفي الوقت نفسه، يمكن ضبط… WP_DEBUG_LOG لأجل trueقم بتسجيل رسائل الخطأ في… /wp-content/debug.log يجب تجنب عرض الملفات مباشرة على الصفحة. بالإضافة إلى ذلك، من المهم جدًا استخدام أدوات مطوري المتصفح لعرض السجل (الكونسول) وطلبات الشبكة.

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

بالنسبة لإعدادات الأزواج المفتاح-القيمة البسيطة، ننصح بشدة باستخدام واجهة برمجة التطبيقات (API) الخاصة بخيارات ووردبريس (WordPress Options API). add_option(), update_option(), get_option() تقوم الدالة بإجراء العمليات المطلوبة، وسيتم تخزين البيانات بشكل آمن. wp_options في جداول قواعد البيانات، بالنسبة لكميات كبيرة من البيانات المنظمة، يمكن النظر في إنشاء جداول قواعد بيانات مخصصة. ولكن هذا يتطلب إدارة أكثر تعقيدًا لدورة حياة هذه الجداول (إنشاؤها أث

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

أثناء عملية التطوير، يجب تجنب استخدام الدوال الجديدة جدًا التي تتطلب إصدارات أعلى من ووردبريس. بالنسبة للدوال الأحدث التي ترغب في استخدامها، قم باختبارها أولاً قبل تطبيقها في موقعك الإلكترون function_exists() قم بإجراء الفحص وقدم خطة ترقية بديلة (أو خطة احتياطية) ملائمة. فيما يتعلق بالإضافة (البرنامج الإضافي)… readme.txt يتم الإشارة بوضوح في الملف إلى أدنى إصدار من ووردبريس الذي تم اجتياز اختباراته بنجاح. إجراء الاختبارات بشكل دوري على إصدارات مختلفة من ووردبريس هو أفضل طريقة لضمان التوافق.