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

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

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

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

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

صيغة ملفات الإضافات (البرامج الإضافية) الضرورية

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

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

<?php
/**
 * Plugin Name: My Awesome Plugin
 * Plugin URI: https://example.com/my-awesome-plugin
 * Description: 这是一个简短的插件描述,说明其核心功能。
 * Version: 1.0.0
 * Author: Your Name
 * Author URI: https://yourwebsite.com
 * License: GPL v2 or later
 * Text Domain: my-awesome-plugin
 */

من بينها Text Domain يُستخدم هذا الأمر للتدويل (i18n)، وهو أساسي لتحقيق دعم متعدد اللغات. يمكن أن يتكون الإضافة (plugin) من ملف واحد فقط، لكن المشاريع الأكثر تعقيدًا عادةً ما تستخدم هيكل مجلدات لتنظيم الملفات الرئيسية، ملفات الكلاسات، ملفات CSS، ملفات JavaScript، والقوالب (templates) وغيرها من الموارد معًا.

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

الملفات الأساسية وهيكل المجلدات

يساعد وجود دليل مكونات (plugins) مُنظم جيدًا في تنظيم وصيانة الكود. قد تكون هيكلية الدليل النموذجية كالتالي:

  • my-awesome-plugin/ (مجلد جذور الإضافة)
  • my-awesome-plugin.php (ملف الإضافة الرئيسية)
  • includes/ (يحتوي على ملفات الكلاسات الأساسية للغة PHP وملفات الدوال)
  • admin/ (تحتوي على ملفات PHP و CSS و JS المتعلقة بالإدارة الخلفية)
  • public/ (تحتوي على ملفات PHP و CSS و JS المتعلقة بالواجهة الأمامية والمعروضة للجمهور)
  • assets/ (يحتوي على الملفات الثابتة مثل الصور، الأيقونات، جداول الأنماط، السكريبتات، إلخ)
  • languages/ (تحتوي على ملفات الترجمة الدولية بصيغة .po و .mo)
  • uninstall.php (اختياري: سكريبت التنظيف الذي يتم تنفيذه عند إزالة الإضافة)

تجعل هذه البنية المعيارية مسؤوليات الكود واضحة، مما يسهل التعاون بين أعضاء الفريق وتوسيع الوظائف في المستقبل.

العملية الأساسية للتطوير وآلية الاستجابة للتغييرات (Hook Mechanism)

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

فهم واستخدام نظام الخطافات (Hook System)

تنقسم الخطافات (Hooks) بشكل أساسي إلى نوعين: الإجراءات (Actions) والمرشحات (Filters). تُستخدم خطافات الإجراءات لتنفيذ كود مخصص في أوقات معينة، مثل بعد نشر مقال أو قبل تحميل قسم التذييل (footer) على الصفحة. add_action() تُستخدم الدوال لعملية التثبيت (الماونتينج). تُعد خطافات المرشحات (filter hooks) أدوات لتعديل البيانات المُرسلة إليها، مثل تغيير عنوان المقالة أو محتواها أو ملخصها. add_filter() يجب أن تكون الدالة المستخدمة للتثبيت (الماونت) تعيد قيمة معدلة بعد إجراء العمليات اللازمة. إليك مثالاً بسيطاً:

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

// 1. 使用动作钩子:在文章发布后发送一封邮件
add_action( 'publish_post', 'myplugin_send_notification' );
function myplugin_send_notification( $post_id ) {
    $post = get_post( $post_id );
    wp_mail( '[email protected]', '新文章已发布', '文章标题:' . $post->post_title );
}

// 2. 使用过滤器钩子:在所有文章标题末尾添加一个商标符号
add_filter( 'the_title', 'myplugin_add_trademark' );
function myplugin_add_trademark( $title ) {
    return $title . '™';
}

إنشاء وظيفة كود قصيرة وبسيطة

الرموز المختصرة (Shortcodes) تمثل وسيلة مهمة تسمح للمستخدمين بإدراج ميزات الإضافات (Plugins) بسهولة داخل المقالات أو الصفحات. add_shortcode() يمكن إنشاء الدوال بسهولة. على سبيل المثال، يمكن كتابة كود قصير لعرض السنة الحالية. [current_year]

add_shortcode( 'current_year', 'myplugin_current_year_shortcode' );
function myplugin_current_year_shortcode( $atts ) {
    // 允许用户传入一个属性来指定格式,默认返回完整年份
    $atts = shortcode_atts( array(
        'format' => 'Y',
    ), $atts );

    return date( $atts['format'] );
}

يمكن للمستخدمين إدخال النصوص في المحرر. [current_year] أرجو إدخال الرقم “2026” للحصول على النتيجة المطلوبة. [current_year format="y"] 来输出 26。短代码处理函数应该总是返回(return)字符串,而不是直接输出。

أمان الإضافات وإدارة البيانات

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

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

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

تشكل هذه الخطوط الثلاث الدفاعية الأساس لأمان ووردبريس. عملية التحقق (Validation) تضمن أن البيانات المدخلة تتوافق مع الصيغ المتوقعة (مثل ما إذا كانت عناوين بريد إلكتروني أو أرقام). عملية التنقية (Sanitization) تهدف إلى إزالة أي أحرف غير آمنة قبل حفظ البيانات في قاعدة البيانات. أما عملية التهريب (Escaping) فهي تضمن ترميز البيانات بشكل آمن عند عرضها على المتصفح، لمنع هجمات الكود الخبيث عبر المواقع (XSS – Cross-Site Scripting).

// 1. 验证:检查是否为有效邮箱
if ( ! is_email( $user_email ) ) {
    wp_die( '请输入有效的电子邮件地址。' );
}

// 2. 清理:清理用户输入的标题,移除 HTML 标签
$clean_title = sanitize_text_field( $_POST['title'] );

// 3. 转义:安全地输出变量到 HTML 属性或内容中
echo '<input type="text" value="' . esc_attr( $clean_title ) . '">'echo '<p>'`. esc_html($user_content)`.'</p>';

لا تثق أبدًا بما يدخله المستخدمون، واستخدم الدوال المساعدة الوفيرة المتاحة في ووردبريس. is_email(), sanitize_text_field(), esc_html(), esc_attr(), wp_kses_post() إلخ.

التفاعل مع أمان قواعد البيانات

يقدمه ووردبريس $wpdb استخدم فئات عالمية (global classes) للتفاعل مع قاعدة البيانات بشكل آمن. هذا أفضل من استخدام الطرق المباشرة. mysql_* استخدام الدوال أو عبارات SQL المُجمعة أكثر أمانًا بكثير. بالنسبة لبيانات مثل إعدادات الإضافات (plugins settings)، ننصح بشدة باستخدام واجهة برمجة التطبيقات (API) الخاصة بـ WordPress والمسماة “WordPress Options API”.add_option(), get_option(), update_option()) للمعالجة.

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

// 使用 $wpdb 进行自定义查询(示例:获取所有自定义文章类型)
global $wpdb;
$results = $wpdb->get_results( "SELECT * FROM {$wpdb->posts} WHERE post_type = 'my_custom_post_type'" );

// 使用 Options API 存储插件设置
$options = get_option( 'myplugin_settings', array() ); // 获取现有设置或默认空数组
$options['api_key'] = sanitize_text_field( $_POST['api_key'] );
update_option( 'myplugin_settings', $options );

الميزات المتقدمة وأفضل الممارسات

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

تنفيذ صفحة إدارة مخصصة

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

الاستضافة المشتركة InterServer
استضافة مشتركة $2.50 دولار أمريكي في الشهر، الشهر الأول $0.1 دولار أمريكي الرمز الترويجي tryinterserver، 461 نص برمجي للتطبيقات السحابية، تثبيت بنقرة واحدة.
add_action( 'admin_menu', 'myplugin_add_admin_menu' );
function myplugin_add_admin_menu() {
    // 创建顶级菜单
    add_menu_page(
        '我的插件设置',          // 页面标题
        '我的插件',              // 菜单标题
        'manage_options',       // 所需权限
        'myplugin-settings',    // 菜单别名 (slug)
        'myplugin_settings_page', // 渲染页面的函数
        'dashicons-admin-generic', // 图标
        6                       // 菜单位置
    );
}
function myplugin_settings_page() {
    // 在此函数中输出设置页面的 HTML 内容
    // 务必包含安全检查:settings_fields() 和 do_settings_sections()
    ?&gt;
        <div class="wrap">
            <h1></h1>
            <form action="/ar/options.php/" method="post" data-trp-original-action="options.php">
                <?php
                    settings_fields( 'myplugin_options_group' );
                    do_settings_sections( 'myplugin-settings' );
                    submit_button();
                ?>
            <input type="hidden" name="trp-form-language" value="ar"/></form>
        </div>
    أنا لا أعرف ماذا أقول.

تحميل النصوص والأنماط بشكلٍ موحّد.

لتجنب حدوث تعارضات مع الموضوع الرئيسي أو مع الإضافات الأخرى، يجب استخدام الطرق الموصى بها من قبل ووردبريس. wp_enqueue_script() و wp_enqueue_style() لتحميل السكريبتات والأنماط، ومن خلال… wp_add_inline_script() أو wp_localize_script() كيفية نقل متغيرات PHP بشكل آمن إلى JavaScript؟ الوقت المناسب لتنفيذ ذلك هو عند استخدام… wp_enqueue_scripts الهوك (الجزء الأمامي من النظام) و… admin_enqueue_scripts الخطاف (الخلفية).

add_action( 'admin_enqueue_scripts', 'myplugin_load_admin_assets' );
function myplugin_load_admin_assets( $hook_suffix ) {
    // 仅在特定插件页面加载资源,优化性能
    if ( 'toplevel_page_myplugin-settings' !== $hook_suffix ) {
        return;
    }
    wp_enqueue_style( 'myplugin-admin-style', plugin_dir_url( __FILE__ ) . 'assets/css/admin.css', array(), '1.0.0' );
    wp_enqueue_script( 'myplugin-admin-script', plugin_dir_url( __FILE__ ) . 'assets/js/admin.js', array( 'jquery' ), '1.0.0', true );
    // 将 PHP 变量安全传递给 JS
    wp_localize_script( 'myplugin-admin-script', 'myplugin_ajax_object',
        array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'nonce' => wp_create_nonce( 'myplugin_nonce' ) )
    );
}

الملخصات

تطوير إضافات ووردبريس (WordPress plugins) يعتبر مشروعًا منهجيًا يتطلب البدء بفهم آلية “الهوكات” (Hooks) الأساسية في نظام ووردبريس، ثم التدرج في إتقان الميزات المتقدمة مثل الكود المختصر (Short Codes) والأدوات الصغيرة (Small Tools) وأنواع المقالات المخصصة (Custom Article Types). يجب أن تكون الإضافات الناجحة قوية من حيث الوظائف، وفي الوقت نفسه يجب أن تولي أهمية قصوى للأمان، من خلال إجراء عمليات تحقق من البيانات (Data Validation) وتنظيفها وتهريبها (Data Escaping) بشكل صارم. بالإضافة إلى ذلك، اتباع أفضل الممارسات مثل هيكل الملفات المعياري (Modular File Structure) وتحميل الموارد بشكل منظم (Standardized Resource Loading) وواجهة الإدارة المتكاملة (Complete Management Interface) يمكن أن يحسن بشكل كبير من جودة الإضافة وتجربة المستخدم. من خلال الممارسة المستمرة والتطوير المتكرر، يمكن للمطورين إنشاء إضافات ووردبري

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

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

يجب أن تكون على دراية بلغة البرمجة PHP، لأنها الأساس الذي يعتمد عليه برنامج ووردبريس (WordPress).
من المهم جدًا فهم أساسيات لغات HTML وCSS وJavaScript لبناء واجهات تفاعلية بين الجزء الأمامي (المستخدم) والجزء الخلفي (الخادم) من الموقع الإلكتروني.
لدي فهم مفاهيمي للهيكل الأساسي لووردبريس، مثل نظام الأحداث (hooks)، بنية قاعدة البيانات، ومستويات قوالب المواقع (theme templates).
لا يلزم أن تكون خبيرًا، ولكن يجب أن تمتلك القدرة على التنفيذ العملي، وأن تواصل التعلم من خلال قراءة كتيبات المطورين الرسمية.

ما هو الفرق الأساسي بين الإجراءات (Actions) والمرشحات (Filters) داخل أداة الخطافات (Hooks)؟

يُستخدم خيط العمليات (Action Hook) لتنفيذ كود في لحظات معينة، ولا يُرجع أي قيمة. يعمل كمحفز (trigger)؛ على سبيل المثال، عند حفظ المقال، يمكنك تنفيذ كود إضافي.
مكونات الفلتر (Filter hooks) تُستخدم لتعديل البيانات المُرسلة إليها، ويجب أن تُرجع قيمة معينة كنتيجة لعمليات التعديل. تعمل هذه المكونات مثل معالجات بيانات؛ على سبيل المثال، يمكنك تعديل محتوى عناو
طريقة سهلة لتذكر ذلك: الفعل هو “القيام” بشيء ما، بينما الفلتر هو “تعديل” البيانات.

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

أولاً، قم بتفعيل ووردبريس (WordPress). WP_DEBUG النمط… في. wp-config.php تم تعيين الإعدادات في الملف. define( 'WP_DEBUG', true );هذا يجعل أخطاء PHP وتحذيراتها وإشعاراتها تظهر بشكل واضح.
الاستفادة من error_log() أو استخدام إضافات تصحيح الأخطاء المتخصصة مثل Ray، Query Monitor، Debug Bar لتسجيل القيم المتغيرة وتتبع سير التنفيذ.
بالنسبة لحالات استخدام AJAX أو اللوغيكيات التجارية المعقدة، يمكن استخدام أدوات مطوري المتصفحات (مثل F12) وتحديداً لوحتي “Console” و“Network” لتحليل المشاكل وتحديد أسبابها.

كيف يمكنني جعل الإضافة (plugin) التي قمت بتطويرها تدعم عدة لغات؟

قم بتعريف الأمور بشكل صحيح في تعليقات رأس الإضافة (plugin header comments). Text Domain(على سبيل المثال، my-awesome-plugin)。
في جميع النصوص التي تحتاج إلى الترجمة، استخدم دوال الترجمة المتاحة في ووردبريس، مثل… (), _e(), esc_html() مثل:$text = __( 'Hello World', 'my-awesome-plugin' );
استخدم أدوات مثل Poedit لمسح سلاسل النصوص المترجمة داخل الكود وإنشاء ملفات مناسبة. .pot ملفات القوالب، واستنادًا إليها يتم إنشاء نسخ مخصصة للغات المختلفة. .po والمُجمَع (المُترجم) بعد عملية التجميع (الترجمة). .mo ملف.

ما الذي يجب الانتباه إليه قبل نشر الإضافة (البرنامج الإضافي)؟

إجراء اختبارات شاملة للتوافق بين مختلف المتصفحات والأجهزة.
إجراء الاختبارات في بيئات مختلفة من إصدارات PHP وإصدارات WordPress لضمان التوافق مع الإصدارات السابقة.
قم بكتابة وثيقة إرشادات استخدام الإضافة (README.txt) بشكل واضح ومفصل.
تحقق وتأكد من أن كود الإضافة (البرنامج الإضافي) يتبع معايير ترميز ووردبريس (WordPress Coding Standards).
يمكنك التفكير في نشر الإضافة الخاصة بك في مكتبة الإضافات الرسمية لووردبريس (WordPress Official Plugins Directory)، حيث يوجد عملية مراجعة صارمة للكود، وهذا قد يساعدك في اكتشاف المشاكل المحتملة والوصول إلى عدد هائل من المستخ