كل دليل ووردبريس يقول لك "أضف هذا إلى functions.php" — لكنها نصيحة هشة. تحديثات القالب قد تمحو تغييراتك، إعداد القالب الفرعي يُضيف تعقيداً، وخطأ برمجي واحد في functions.php يُحطم موقعك بالكامل.

هناك طريقة أفضل: mu-plugins (الإضافات التلقائية).

ما هي mu-plugins؟

mu-plugins (الإضافات التلقائية) هي ملفات PHP تُوضع في wp-content/mu-plugins/. ووردبريس يُحمّلها تلقائياً في كل طلب — لا حاجة لتفعيل، ولا إمكانية لإلغاء التفعيل بالخطأ.

الميزة functions.php إضافة عادية mu-plugin
تبقى بعد تحديث القالب لا نعم نعم
يمكن إلغاء تفعيلها بالخطأ تغيير القالب = ذهبت نعم لا
تُحمّل تلقائياً مع القالب بعد التفعيل دائماً
مرئية في الإدارة لا صفحة الإضافات تبويب إضافات تلقائية
خطأ برمجي واحد = تحطّم الموقع تحطّم الإضافة تحطّم الموقع*

* نفس خطر functions.php، لكن mu-plugins ملفات معزولة — أسهل للإصلاح عبر FTP لأنك تحذف فقط الملف المُشكِل.

كيفية الإعداد

ممارسة آمنة: قبل إجراء أي تغييرات تقنية، تأكد من وجود نسخة احتياطية كاملة لموقعك (الملفات وقاعدة البيانات) عبر لوحة تحكم الاستضافة أو إضافة متخصصة مثل UpdraftPlus.

الخطوة 1: أنشئ المجلد

اتصل بموقعك عبر FTP، مدير الملفات، أو SSH وانتقل إلى wp-content/.

أنشئ مجلداً اسمه mu-plugins إذا لم يكن موجوداً:

  • مدير الملفات / FTP: انقر يمين → مجلد جديد → سمِّه mu-plugins
  • SSH: mkdir mu-plugins

الخطوة 2: أنشئ أول mu-plugin

أنشئ ملف PHP جديد داخل mu-plugins/. سمِّه بوصف جيد — مثلاً site-tweaks.php:

<?php
/**
 * Plugin Name: Dravasite – تحسينات الموقع
 * Description: تحسينات أداء وأمان مخصصة.
 * Version: 1.0.0
 */

// امنع الوصول المباشر
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

رأس Plugin Name مهم — يجعل mu-plugin تظهر بشكل صحيح تحت إضافات ← إضافات تلقائية في لوحة الإدارة.

الخطوة 3: أضف مقتطفات الكود

أضف كل مقتطف تحت الرأس. إليك مثال يجمع عدة تحسينات شائعة:

<?php
/**
 * Plugin Name: Dravasite – تحسينات الموقع
 * Description: تحسينات أداء وأمان مخصصة.
 * Version: 1.0.0
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

// ── أزِل سكربت الإيموجي (المتصفحات تتعامل مع الإيموجي أصلاً) ──
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'wp_print_styles', 'print_emoji_styles' );

// ── أبطئ Heartbeat API (الافتراضي: 15 ثانية → 120 ثانية) ──
add_filter( 'heartbeat_settings', function ( $settings ) {
    $settings['interval'] = 120;
    return $settings;
} );

// ── عطّل XML-RPC (وصول بعيد قديم) ──
add_filter( 'xmlrpc_enabled', '__return_false' );

ملف واحد أم عدة ملفات؟

ملف واحد أبسط للمواقع الصغيرة. سمِّه شيء مثل site-tweaks.php.

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

mu-plugins/
├── disable-emoji.php
├── heartbeat-control.php
├── disable-xmlrpc.php
└── dequeue-duplicate-jquery.php

كلا الطريقتان تعملان. اختر الأسهل لك في الإدارة.

قالب لـ mu-plugins أحادية الغرض

استخدم هذا القالب لكل تحسين مستقل:

<?php
/**
 * Plugin Name: Dravasite – تعطيل سكربت الإيموجي
 * Description: يُزيل سكربت كشف الإيموجي من ووردبريس.
 *              المتصفحات تتعامل مع الإيموجي أصلاً منذ 2015.
 * Version: 1.0.0
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

// أزِل JavaScript الإيموجي من <head>
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );

// أزِل CSS الإيموجي من
remove_action( 'wp_print_styles', 'print_emoji_styles' );

لاحظ كيف كل سطر له تعليق يشرح ماذا يفعل ولماذا. أنت مستقبلًا (أو المطوّر التالي) سيشكرك.

كيفية التحقق

بعد رفع mu-plugin:

  1. اذهب إلى إضافات في إدارة ووردبريس
  2. اضغط تبويب "إضافات تلقائية" في الأعلى
  3. إضافتك يجب أن تظهر هناك بالاسم والوصف

إذا لم تر تبويب إضافات تلقائية، يعني مجلد mu-plugins غير موجود أو ليس فيه ملفات PHP صالحة.

أخطاء شائعة

  • نسيان وسم <?php الافتتاحي — كل ملف mu-plugin يجب أن يبدأ به
  • أخطاء برمجية — اختبر مقتطفك على موقع تجريبي أولاً. mu-plugin معطوب يُحطم الموقع مثل functions.php معطوب
  • المجلدات الفرعية — ووردبريس يُحمّل فقط ملفات PHP مباشرة داخل mu-plugins/. الملفات في المجلدات الفرعية تُتجاهل