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

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

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

الاستعدادات وإعداد البيئة.

قبل كتابة أول سطر من الكود، تحتاج إلى بيئة تطوير مناسبة وفهم أساسي لبنية ووردبريس (WordPress).

إعداد بيئة التطوير

بيئة التطوير المحلية القياسية هي الأساس الذي يُبنى عليه التطوير الفعال. نوصي باستخدام أدوات مثل XAMPP أو MAMP أو Local by Flywheel، والتي تسمح بتثبيت Apache وMySQL/Nginx وPHP وWordPress بنقرة واحدة. بالإضافة إلى ذلك، تأكد من أن محرر النصوص الخاص بك أو بيئة التطوير المتكاملة (IDE) مثل VS Code أو PhpStorm تدعم تمييز لغة PHP وتقديم اقتراحات للكود، وهذا سيعزز بشكل كبير كفاءة عملية التطوير.

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

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

في الأساس، إضافة (plugin) لووردبريس (WordPress) عبارة عن ملف أو ملفات بلغة PHP، موجودة في مسار معين داخل نظام ووردبريس. wp-content/plugins/ موجود داخل المجلد. المبدأ الأساسي الذي يعتمد عليه هو آلية “الخطافات” (hooks). تقوم الإضافات (plugins) بتنفيذ الكود في أوقات محددة من خلال “خطافات الإجراءات” (action hooks)، أو تعديل البيانات الناتجة عن دوال أخرى باستخدام “خطافات المر add_action و add_filter هاتان الدالتان هما المفتاح الأساسي لبدء تطوير الإضافات (البرامج الإضافية).

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

قم بإنشاء أول إضافة (plugin) الخاصة بك: أداة التحية (Greeting Widget).

سنقوم بإنشاء إضافة بسيطة تسمى “تحيات يومية” (Daily Greetings). ستعرض هذه الإضافة أداة ترحيب مخصصة على لوحة التحكم الخاصة بالواجهة الخلفية للموقع الإلكتروني.

إنشاء ملف رئيسي للإضافة (Plugin Main File)

أولاً، في… wp-content/plugins/ قم بإنشاء مجلد جديد داخل المجلد الحالي، وأطلق عليه الاسم التالي: my-first-greeting-pluginداخل هذا المجلد، قم بإنشاء ملف الإضافة الرئيسية (البرنامج الإضافي). my-first-greeting-plugin.php

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

<?php
/**
 * Plugin Name: 每日问候
 * Plugin URI:  https://www.yourwebsite.com/my-first-greeting-plugin
 * Description: 这是一个示例插件,用于在仪表盘显示个性化问候。
 * Version:     1.0.0
 * Author:      Your Name
 * Author URI:  https://www.yourwebsite.com
 * License:     GPL v2 or later
 * Text Domain: my-first-greeting
 */

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

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

إضافة أدوات إضافية إلى لوحة التحكم

بعد ذلك، سنستخدم ووردبريس (WordPress) لـ… wp_dashboard_setup استخدم “خطافات الإجراءات” (Action Hooks) لإضافة أداة مخصصة للمؤشرات (Dashboard Widget). أسفل تعليقات بداية الملف الرئيسي، أضف الكود التالي:

// 添加仪表盘小工具
function mfgp_add_dashboard_widget() {
    wp_add_dashboard_widget(
        'mfgp_dashboard_widget',          // 小工具唯一ID
        '每日问候',                       // 小工具标题
        'mfgp_dashboard_widget_content'  // 显示内容的回调函数
    );
}
add_action( 'wp_dashboard_setup', 'mfgp_add_dashboard_widget' );

// 定义小工具内容
function mfgp_dashboard_widget_content() {
    $user = wp_get_current_user();
    $hour = date('G'); // 获取当前小时(24小时制)

if ( $hour &gt;= 5 &amp;&amp; $hour < 12 ) {
        $greeting = '早上好';
    } elseif ( $hour >\n= 12 و $hour &lt; 18 ) {
        $greeting = &#039;下午好&#039;;
    } else {
        $greeting = &#039;晚上好&#039;;
    }

echo &#039;<p>' . sprintf( esc_html__( '%s,%s!欢迎回来。', 'my-first-greeting' ), $greeting, esc_html( $user-&gt;display_name ) ) . '</p>'echo '<p>' . esc_html__( '这是你的第一个插件创建的问候小工具。', 'my-first-greeting' ) . '</p>';
}

يقوم هذا الكود بعملين: أولاً، يقوم بتعريف دالة. mfgp_add_dashboard_widgetالاستخدام wp_add_dashboard_widget تم تسجيل دالة لاستخدامها في أداة صغيرة، ثم تم تعريف تلك الدالة بشكل رسمي. mfgp_dashboard_widget_content هناك دالة مسؤولة عن إنشاء محتوى الأداة الصغيرة، وهي تعرض تحيات مختلفة حسب الوقت من اليوم، بالإضافة إلى اسم المستخدم المسجل حاليًا. لاحظوا أننا استخدمنا… esc_html__() و esc_html() تُعد عملية تحضير الدوال وإخراج البيانات بشكل مشفرة ممارسة مهمة للغاية لضمان الأمان ودعم التعددية الثقافية.

بعد تفعيل الإضافة، قم بتحديث صفحة لوحة المعلومات، وسوف تتمكن من رؤية أداة “التحيات اليومية”.

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

تحسينات في وظائف الإضافات وممارسات الأمان

تم إنجاز إضافة (plugin) أساسية بالفعل، ولكن لجعلها أكثر قوة واحترافية، نحتاج إلى الاهتمام بالأمان (security) وسهولة الصيانة (maintainability) وإمكانيات تخصيص المستخدم (user customization).

صفحة إعدادات إضافة الإضافات

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

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

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

// 添加设置菜单
function mfgp_add_admin_menu() {
    add_options_page(
        '每日问候设置',                // 页面标题
        '每日问候',                    // 菜单标题
        'manage_options',             // 所需权限
        'my-first-greeting-plugin',   // 菜单slug
        'mfgp_settings_page_content' // 回调函数
    );
}
add_action( 'admin_menu', 'mfgp_add_admin_menu' );

ثم، قم بإنشاء محتوى صفحة الإعدادات، وخيارات إعدادات التسجيل، وعمليات معالجة حفظ النموذج:

// 设置页面内容
function mfgp_settings_page_content() {
    ?&gt;
    <div class="wrap">
        <h1></h1>
        <form action="/ar/options.php/" method="post" data-trp-original-action="options.php">
            <?php
            settings_fields( 'mfgp_settings_group' ); // 输出安全字段
            do_settings_sections( 'my-first-greeting-plugin' ); // 输出设置区块
            submit_button(); // 输出提交按钮
            ?>
        <input type="hidden" name="trp-form-language" value="ar"/></form>
    </div>
    <?php
}

// 初始化设置
function mfgp_settings_init() {
    register_setting(
        'mfgp_settings_group', // 选项组名
        'mfgp_custom_message', // 选项名
        array( 'sanitize_callback' => 'sanitize_text_field' ) // 清理回调
    );

add_settings_section(
        'mfgp_section', // 区块ID
        '自定义问候设置', // 区块标题
        null, // 区块描述回调(无)
        'my-first-greeting-plugin' // 所属页面
    );

add_settings_field(
        'mfgp_field',
        '自定义问候语前缀',
        'mfgp_field_callback', // 输出字段HTML的回调
        'my-first-greeting-plugin',
        'mfgp_section'
    );
}
add_action( 'admin_init', 'mfgp_settings_init' );

// 设置字段的回调函数
function mfgp_field_callback() {
    $value = get_option( 'mfgp_custom_message', '祝您有愉快的一天,' );
    echo '<input type="text" name="mfgp_custom_message" value="' . esc_attr( $value ) . '" class="regular-text" />'echo '<p class="description">سيتم إضافة هذا النص قبل عبارات التحية.</p>';
}

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

الاستضافة المشتركة InterServer
استضافة مشتركة $2.50 دولار أمريكي في الشهر، الشهر الأول $0.1 دولار أمريكي الرمز الترويجي tryinterserver، 461 نص برمجي للتطبيقات السحابية، تثبيت بنقرة واحدة.
// 更新小工具内容函数,使用自定义消息
function mfgp_dashboard_widget_content() {
    $user = wp_get_current_user();
    $hour = date('G');
    $custom_msg = get_option( 'mfgp_custom_message', '祝您有愉快的一天,' );

if ( $hour &gt;= 5 &amp;&amp; $hour < 12 ) {
        $greeting = '早上好';
    } elseif ( $hour >\n= 12 و $hour &lt; 18 ) {
        $greeting = &#039;下午好&#039;;
    } else {
        $greeting = &#039;晚上好&#039;;
    }

echo &#039;<p>' . esc_html( $custom_msg ) . sprintf( esc_html__( '%s,%s!', 'my-first-greeting' ), $greeting, esc_html( $user-&gt;display_name ) ) . '</p>';
}

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

الالتزام بمعايير الأمان والترميز (Following Security and Coding Standards)

أثناء عملية التطوير، يجب اتباع ممارسات الأمان الخاصة بـ WordPress: استخدام دوال التهريب المناسبة لجميع البيانات القادمة من المستخدمين أو قاعدة البيانات والتي ستتم عرضها لاحقًا. esc_html, esc_attr, esc_urlيتم التحقق من صحة جميع المدخلات من قبل المستخدمين وتنقيتها (مثل باستخدام أدوات معينة). sanitize_text_field)؛ الاستخدام wp_kses_post أو wp_kses يتم السماح باستخدام HTML الآمن. في الوقت نفسه، يُنصح باتباع المعايير الموصى بها. معايير الترميز الخاصة بلغة PHP الرسمية لمنصة WordPress، لضمان وضوح الكود واتساقه.

تدويل الإضافات (Plugins) والاستعداد لنشرها

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

إنجاز عملية تدويل المكوّنات الإضافية.

لقد استخدمنا ذلك بالفعل في الكود. esc_html__() لتغليف النصوص المراد ترجمتها، يجب عليك إنشاء ملف في دليل الإضافات (plugins directory). هذا الإجراء ضروري لتحقيق عملية التدويل (internationalization) بشكل صحيح. languages مجلد. ثم، أضف الكود التالي بعد التعليقات في بداية الملف الرئيسي لتحميل مجال النصوص:

// 加载文本域以实现国际化
function mfgp_load_textdomain() {
    load_plugin_textdomain( 'my-first-greeting', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}
add_action( 'plugins_loaded', 'mfgp_load_textdomain' );

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

التحضير للنشر في الدليل الرسمي

إذا كنت تخطط لتقديم الإضافة (البرنامج الإضافي) إلى مجلد الإضافات في موقع WordPress.org، فمن الضروري التأكد من جودة الكود وتضمين الملفات الوصفية (الميتادات) الضرورية. على سبيل المثال، يجب إنشاء… readme.txt الملف يجب أن يكون بتنسيق معين، ويجب أن يتوافق هذا التنسيق مع المتطلبات المحددة. معايير محددة لـ WordPressيجب أن يتضمن المحتوى أسماء الإضافات (البرامج الإضافية)، ووصفها، وخطوات التثبيت، والأسئلة الشائعة، وسجلات التحديثات، وما إلى ذلك. بالإضافة إلى ذلك، يُفضل إضافة آلية لإلغاء التثبيت (uninstallation hook) تقوم ب

// 插件卸载时清理选项
function mfgp_uninstall_hook() {
    delete_option( 'mfgp_custom_message' );
}
register_uninstall_hook( __FILE__, 'mfgp_uninstall_hook' );

الملخصات

من خلال إنشاء هذا الإضافة “التحية اليومية”, لقد مررنا بشكل كامل بالعمليات الأساسية لتطوير الإضافات في ووردبريس: بدءًا من إنشاء هيكل الملفات الأساسي، واستخدام خطافات الأعمال (action hooks) لإضافة الميزات، وصولاً إلى إنشاء واجهة الإدارة، وتطبيق معايير الأمان، والاستعداد للترجمة إلى لغات أخرى. الأمر الأهم هو فهم نظام الخطافات في ووردبريس واستخدامه ببراعة، مع الحرص دائمًا على أن تكون الأمان ومعايير الكود في المقام الأول. هذا المثال البسيط هو نقطة البداية لرحلتك في تطوير الإضافات؛ يمكنك من خلاله استكشاف ميزات أكثر تعقيدًا مثل الكود المختصر (shortcodes)، وأنواع المقالات المخصصة (custom post types)، ونقاط نهاية واجهة برمجة التطبيقات الخدمية (REST API endpoints)، وغيرها، لتطوير إضافات متقدمة ومتخصصة.

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

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

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

لماذا لا يظهر الإضافة (البرنامج الإضافي) الخاص بي في قائمة الخلفية؟

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

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

في wp-config.php في الملف، سيتم… WP_DEBUG تم تعيين الثابت على قيمة trueسيسمح هذا لبرنامج WordPress بعرض أخطاء PHP وتحذيراتها وإشعاراتها على الصفحات. يرجى ملاحظة أنه يجب تفعيل هذه الميزة فقط في بيئة التطوير، ويجب إيقافها قبل نشر الموقع على الإنترنت.

ما الفرق بين ملفات functions.php في الإضافات (plugins) والقوالب (themes)؟

في موضوع… functions.php الميزات المضافة مرتبطة بموضوع معين، وعند تغيير الموضوع قد تتوقف هذه الميزات عن العمل. أما الميزات التي توفرها الإضافات (plugins) فهي مستقلة عن الموضوعات؛ فطالما أن الإضافة مفعلة، ستكون الميزات متاحة دائمًا بغض النظر عن الموضوع المستخدم. بالنسبة للميزات التي تكون ذات استخدام عام، فإن تطو

كيف يمكن للمطورين الآخرين توسيع إضافتي (البرنامج الإضافي)؟

يمكنك السماح للمطورين الآخرين بتوسيع إضافتك (البرنامج الإضافي) عن طريق توفير “خطافات إجراءات” (Action Hooks) و“خطافات فلاتر” (Filter Hooks) مخصصة. do_action() قم بإنشاء “خطافات للإجراءات” (action hooks)، و"قم بالتنفيذ المطلوب" في الأماكن التي يحتاج فيها النظام إلى إدخال كود. apply_filters() إنشاء خطافات (hooks) للفلاتر يسمح للمستخدمين بتعديل بعض قيم البيانات داخل الإضافات الخاصة بك. هذا هو النمط الشائع للتعاون بين الإضافات في بيئة ووردبريس.