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

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

الاستعدادات: فهم أساسيات إضافات ووردبريس (WordPress Plugins)

قبل البدء في كتابة الكود، من الضروري جدًا إنشاء أساس نظري متين. برنامج إضافي (Plugin) لـ WordPress في جوهره عبارة عن مجموعة من ملفات PHP واحد أو أكثر، ويعمل هذا البرنامج من خلال الواجهات والميزات التي توفرها منصة WordPress نفسها.Hook(钩子)الأدوات المساعدة (Plugins) تُستخدم لتوسيع أو تعديل الوظائف الأساسية لنظام ووردبريس (WordPress). قد تكون هذه الأدوات بسيطة للغاية، حيث تضيف كودًا قصيرًا فقط، أو قد تكون معقدة للغاية، حيث تُنشئ تطبيق/wp-content/plugins/داخل الدليل، يمتلك كل مكون إضافي مجلده المستقل الخاص به.

بيئة التطوير هي مكتب عملك. تحتاج إلى بيئة خادم محلية، مثل XAMPP أو MAMP أو Local by Flywheel، وتثبيت برنامج WordPress عليها. ننصح بشدة بذلك.wp-config.phpتم تفعيل الملف.WP_DEBUGهذا النمط سيساعدك على تحديد المشاكل بسرعة أثناء عملية التطوير. بالإضافة إلى ذلك، من الضروري أيضًا امتلاك محرر كود متقن مثل VS Code أو PhpStorm، بالإضافة إلى متصفح حديث مزود بأدوات للمطورين.

إنشاء أول إضافة (Plugin): الهيكل الأساسي والتفعيل

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

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

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

خادم ووردبريس من شركة 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:            你的名字
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 */

بعد حفظ الملف، قم بتسجيل الدخول إلى واجهة إدارة WordPress الخاصة بك، ثم اذهب إلى صفحة “الإضافات” (Plugins). سترى إضافة بعنوان “أول إضافة لي” (My First Plugin) موجودة في القائمة. انقر على “تفعيل” (Activate)، وسيتم تفعيل الإضافة بشكل رسمي، على الرغم من أنها لن تقوم بأي شيء في الوقت الحالي.

تنفيذ الميزة الأساسية: إضافة المحتوى باستخدام "الخطافات" (hooks).

قوة ووردبريس تكمن في…Hook(钩子)النظام، مقسم إلى…Action(动作)وFilter(过滤器)اثنان. تسمح لك خطافات الإجراءات بإدراج شفرتك الخاصة لتنفيذ وظائف في نقاط زمنية محددة، مثل عند تحميل الصفحة أو عند نشر المقالة. بينما تسمح لك خطافات الفلتر بتعديل البيانات المنقولة خلال العملية، مثل محتوى المقالة أو العنوان.

لإضافة نص إلى القسم السفلي من الصفحة (القائمة)، نحتاج إلى استخدام…wp_footerهذا هو خطاف الإجراء (action hook). دعونا نضيف الكود التالي إلى ملف الإضافة الرئيسي (main plugin file):

// 这是一个安全措施,防止直接访问PHP文件
if ( ! defined( 'ABSPATH' ) ) {
    exit; // 如果ABSPATH未定义,则退出
}

/**
 * 在网站页脚输出自定义HTML内容
 */
function myfp_add_footer_text() {
    echo '<div style="text-align: center; padding: 20px; border-top: 1px solid #eee; margin-top: 40px;">'echo '<p>© ' . date('Y') . ' موقعي الإلكتروني. جميع الحقوق محفوظة. تم إنشاء هذا المحتوى بواسطة…<strong>أول إضافة (Plugin) لي</strong>"Generate."</p>'echo '</div>';
}
// 将我们的函数挂载到 `wp_footer` 动作钩子上
add_action( 'wp_footer', 'myfp_add_footer_text' );

في هذا القطعة من الكود، نقوم أولاً بتعريف الدالة (function).myfp_add_footer_text()وظيفته هي إنتاج قطعة من كود HTML. بعد ذلك، نستخدمها…add_action()تقوم الدالة بـ “تثبيت” هذه الدالة المخصصة على…wp_footerعلى هذا الخطاف… هذا يعني أنه في كل مرة يقوم فيها ووردبريس بتنفيذ…wp_footerعندما يتعلق الأمر بالموقع (وغالبًا ما يكون ذلك ضمن إطار الموضوع الرئيسي)...footer.phpعندما يتم فتح الملف، سيتم استدعاء دالتنا تلقائيًا، مما يؤدي إلى عرض معلومات حقوق النشر التي حددناها في أسفل الصفحة.

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

ميزات متقدمة: إنشاء صفحات إدارة وأكواد قصيرة

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

أضف صفحة الإعدادات إلى قائمة الإدارة.

سنستخدم…add_menu_page()تقوم الدالة بإضافة عنصر جديد إلى قائمة الجانب الأيسر في واجهة ووردبريس الخلفية. قم بتعديل ملف الإضافة الرئيسية وأضف الكود التالي:

/**
 * 注册插件管理菜单
 */
function myfp_add_admin_menu() {
    add_menu_page(
        '我的第一个插件设置', // 页面标题
        '我的插件',           // 菜单标题
        'manage_options',     // 所需权限
        'myfp-settings',      // 菜单slug
        'myfp_settings_page', // 显示页面内容的回调函数
        'dashicons-admin-plugins', // 图标(使用Dashicon)
        30                    // 菜单位置
    );
}
add_action( 'admin_menu', 'myfp_add_admin_menu' );

/**
 * 设置页面的HTML内容
 */
function myfp_settings_page() {
    // 检查用户权限
    if ( !current_user_can( 'manage_options' ) ) {
        return;
    }
    ?&gt;
    <div class="wrap">
        <h1></h1>
        <p>مرحبًا بك في صفحة إعدادات “أول إضافة لي”. هذا مثال بسيط على واجهة إدارة.</p>
        <form action="/ar/options.php/" method="post" data-trp-original-action="options.php">
            <?php
            // 未来可以在这里添加设置字段
            ?>
            <p>سيتم شرح المزيد من الميزات المتقدمة (مثل حفظ الإعدادات) في الدروس اللاحقة.</p>
        <input type="hidden" name="trp-form-language" value="ar"/></form>
    </div>
    أنا لا أعرف ماذا أقول.

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

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

قم بإنشاء وتسجيل رمز قصير (short code).

تسمح الرموز المختصرة للمستخدمين باستخدام طرق بسيطة للقيام بمهام معينة أو الوصول إلى محتويات معينة.[shortcode]تُستخدم العلامات (tags) لإدراج محتوى ديناميكي في المقالات أو الصفحات. دعونا نقوم بإنشاء كود قصير يعرض الوقت الحالي للخادم.

/**
 * 短代码处理函数
 * @param array $atts 短代码属性
 * @param string $content 短代码包裹的内容
 * @return string 返回要替换的HTML
 */
function myfp_current_time_shortcode( $atts = [], $content = null ) {
    // 设置默认属性并合并用户传入的属性
    $atts = shortcode_atts(
        array(
            'format' =&gt; 'Y-m-d H:i:s',
        ),
        $atts,
        'current_time'
    );

// 根据format属性格式化当前时间
    $current_time = date( $atts['format'] );

// 返回输出内容
    return '<div class="myfp-time"><strong>الوقت الحالي:</strong> '`. esc_html($current_time)`.'</div>'// تسجيل الرمز المختصر [current_time]
add_shortcode( 'current_time', 'myfp_current_time_shortcode' );

الآن، يمكنك إدخال النص في أي مقالة أو صفحة أو مربع نصوص لأداة ما.[current_time]لعرض الوقت بالتنسيق الافتراضي، أو باستخدام…[current_time format="F j, Y"]لعرض الوقت بتنسيق مخصص، سيقوم ووردبريس تلقائيًا بتنفيذ الكود الذي قمنا بكتابته.myfp_current_time_shortcode()هناك دالة مخصصة لمعالجة هذا الكود القصير واستبداله.

الملخصات

من خلال هذا الدليل، لقد أكملت الخطوات الرئيسية لبناء إضافة (plugin) كاملة الوظائف لموقع ووردبريس (WordPress) من الصفر. لقد تعرفت على الهيكل الأساسي للإضافة، وأهمية التعليقات الموجودة في الجزء العلوي من ملف الإضافة (header comments), ومارست أيضًا جوهر تطوير ووردبريس وهو نظام الخطافات (hook system). لقد نجحت في استخدام هذه المفاهيم بشكل فعالadd_action()تم إضافة المحتوى إلى واجهة الموقع الإلكتروني، وتم استخدام…add_menu_page()تم إنشاء واجهة خلفية للإدارة، وتم استخدامها.add_shortcode()تم تسجيل رموز قصيرة يمكن استخدامها من قبل محررات المحتوى.

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

هذا مجرد نقطة البداية في عالم تطوير الإضافات (البرامج الإضافية). من هنا، يمكنك استكشاف مجالات أكثر تعقيدًا، مثل: إنشاء جداول قواعد البيانات لتخزين البيانات، واستخدام…add_settings_section()وadd_settings_field()قم ببناء صفحات الخيارات الحقيقية، ومعالجة عمليات إرسال النماذج (forms submission)، وإضافة تفاعلات AJAX، وإنشاء أنواع مقالات وتصنيفات مخصصة، واتبع معايير ترميز WordPress وأفضل الممارسات الأمنية عند نشر الإضافات الخاصة بك. مع الاستمرار في الممارسة والاستكشاف، ستتمكن من تطوير إضافات WordPress قوية ومحترفة.

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

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

يمكن أن يحتوي الإضافة (plugin) على ملف PHP رئيسي واحد فقط. بالنسبة للإضافات البسيطة، هذا كافٍ تمامًا. ولكن عندما تصبح وظائف الإضافة أكثر تعقيدًا، يُنصح بتقسيم وحدات الوظائف المختلفة إلى ملفات منفصلة (مثل ملفات CSS، JavaScript، ملفات تعريف الكلاسات، إلخ) من أجل الحفاظ على وضوح الكود وسهولة الصيانة، ثم تنظيم تحميل هذه الملفات من خلال الملف الرئيسي.

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

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

عادةً ما يحدث هذا بسبب خطأ في تنسيق التعليقات في بداية المكون الإضافي (plugin) أو خطأ في مسار الملف. يرجى التأكد من أن ملف PHP الرئيسي للمكون الإضافي الخاص بك موجود مباشرة في المكان المحدد./wp-content/plugins/your-plugin-folder/الملف موجود داخل المجلد، وتنسيق كتلة التعليقات في بداية الملف صحيح تمامًا، خاصةً…Plugin Name:هذا السطر ضروري للغاية؛ بعد التأكد من أن كل شيء صحيح، ما عليك سوى تحديث صفحة الإضافة (البرنامج الإضافي).

ما الفرق بين خطافات الأفعال (Action Hooks) وخطافات المرشحات (Filter Hooks)؟

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

كيف يمكن إزالة الخيوط (المسامير) المضافة بشكل آمن؟

يمكنك استخدامremove_action()أوremove_filter()هناك دالة مخصصة لإزالة الخطافات (hooks) التي تم إضافتها مسبقًا. ولكن يجب التأكد من أن عملية الإزالة تتم بعد عملية الإضافة الأصلية، كما يجب أن تكون قيمة معامل الأولوية (priority parameter) مطابقة لتلك المستخadd_action()أوadd_filter()تكون أولويات العمليات متسقة داخل النظام. يُنصح عادةً بتنفيذ عمليات الإزالة عند تعطيل الأدوات الإضافية (البرامج الخارجية) المستخدمة في النظام، أو تحت ظروف معينة.