مشاوره رایگان دریافت کنید !
ما هم اکنون آماده پاسخگویی هستیم!
برای مشاوره رایگان فرم زیر را پر کنید تا مشاوران ما با شما در ارتباط باشند.
siteQ
طراحی سایت ، سئو ، تولید محتوا ، گرافیک ، سوشال مدیا و...
برای مشاوره رایگان فرم زیر را پر کنید تا مشاوران ما با شما در ارتباط باشند.
طراحی سایت ، سئو ، تولید محتوا ، گرافیک ، سوشال مدیا و...

اگر به صورت حرفهای با وردپرس کار میکنید، احتمالاً نام MU Plugins وردپرس یا Must Use Plugins را شنیدهاید. این نوع افزونهها یکی از قدرتمندترین ابزارهای
کنترل و سفارشیسازی هسته وردپرس هستند که بسیاری از توسعهدهندگان حرفهای از آن استفاده میکنند.
در این مقاله جامع، به صورت کاملاً تخصصی بررسی میکنیم:
عبارت MU مخفف عبارت Must Use به معنی «اجباری برای اجرا» است.
>MU Plugins نوع خاصی از افزونههای وردپرس هستند که به محض قرار گرفتن در پوشه مشخصی از وردپرس، به صورت خودکار فعال میشوند و امکان غیرفعال کردن آنها از پنل مدیریت وجود ندارد.
برخلاف افزونههای معمولی که باید از طریق پیشخوان نصب و فعال شوند، افزونههای MU بدون نیاز به فعالسازی دستی اجرا میشوند.
wp-content/mu-plugins/
اگر این پوشه وجود نداشته باشد، میتوانید آن را به صورت دستی ایجاد کنید.
| ویژگی | افزونه معمولی | MU Plugin |
|---|---|---|
| نیاز به فعالسازی | بله | خیر |
| قابل غیرفعالسازی از پیشخوان | بله | خیر |
| بارگذاری در ترتیب اجرا | بعد از MU Plugins | قبل از تمام افزونهها |
| مناسب برای کدهای سیستمی | نسبتاً | کاملاً مناسب |
به دلیل اینکه MU Plugins قبل از تمام افزونههای دیگر اجرا میشوند،
برای کدهای حیاتی، امنیتی و سیستمی بسیار مناسب هستند.
در پروژههای حرفهای مخصوصاً سایتهای سازمانی یا فروشگاههای بزرگ،
کنترل کامل روی رفتار وردپرس اهمیت زیادی دارد. MU Plugins این امکان را فراهم میکند که:
ساخت MU Plugin بسیار ساده است. مراحل زیر را انجام دهید:
در مسیر wp-content یک پوشه به نام mu-plugins بسازید.
داخل پوشه mu-plugins یک فایل PHP بسازید. مثلاً:
custom-core.php
مدیریت چند فایل، بارگذاری اتوماتیک کلاسها و استفاده پیشرفته از MU Plugins در پروژههای سازمانی خواهیم شد.
در پروژههای پیشرفته، مخصوصاً زمانی که چندین قابلیت سیستمی در یک MU Plugin قرار میگیرد،
نوشتن کد به صورت ساده و فانکشنی میتواند در آینده باعث پیچیدگی و کاهش نگهداریپذیری شود.
به همین دلیل توصیه میشود در توسعه MU Plugins وردپرس از معماری شیگرا (OOP) استفاده کنید.
یکی از محدودیتهای MU Plugins این است که وردپرس به صورت پیشفرض فقط فایلهای PHP موجود در ریشه پوشه mu-plugins را لود میکند.
اگر بخواهید ساختار چند فایلی داشته باشید، باید یک فایل Loader بسازید.
wp-content/
└── mu-plugins/
├── core-loader.php
└── core/
├── init.php
├── security.php
├── roles.php
└── performance.php
میتوانید یک Autoloader ساده بسازید یا از استاندارد PSR-4 استفاده کنید.
spl_autoload_register(function ($class) {
$prefix = 'SiteCore\\';
$base_dir = __DIR__ . '/core/classes/';
$len = strlen($prefix);
if (strncmp($prefix, $class, $len) !== 0) {
return;
}
$relative_class = substr($class, $len);
$file = $base_dir . str_replace('\\', '/', $relative_class) . '.php';
if (file_exists($file)) {
require $file;
}
});
این روش باعث میشود مدیریت کلاسها بسیار حرفهایتر انجام شود.
از آنجایی که MU Plugins قبل از تمام افزونهها اجرا میشوند،
هرگونه کد سنگین در این بخش میتواند کل سایت را کند کند.
یکی از کاربردهای بسیار مهم Must Use Plugin مدیریت نقشهاست.
اگر نقش سفارشی مهمی دارید که نباید حذف شود،
بهتر است آن را در MU Plugin تعریف کنید.
add_action('init', function() {
add_role(
'site_manager',
'Site Manager',
[
'read' => true,
'edit_posts' => true,
'manage_options' => false,
]
);
});
به این ترتیب حتی در تغییر قالب یا حذف افزونهها، نقش کاربری شما باقی میماند.
یکی از مهمترین مزایای MU Plugins وردپرس جلوگیری از غیرفعال شدن تنظیمات امنیتی است.
add_action('init', function() {
if (!defined('DISALLOW_FILE_EDIT')) {
define('DISALLOW_FILE_EDIT', true);
}
});
add_filter('rest_authentication_errors', function($result) {
if (!is_user_logged_in()) {
return new WP_Error(
'rest_disabled',
'REST API restricted.',
['status' => 403]
);
}
return $result;
});
در پروژههای سازمانی، برخی تنظیمات باید در کل شبکه سایتها (Multisite) اعمال شوند.
MU Plugins بهترین محل برای این تنظیمات است.
در شبکههای چندسایته، MU Plugins فقط یک بار نصب میشوند اما روی تمام سایتها فعال هستند.
این موضوع آنها را برای مدیریت مرکزی بسیار مناسب میکند.
در واقع در وردپرس Multisite، MU Plugin جایگزین بسیاری از افزونههای Network Activated میشود.
با وجود مزایای فراوان، همیشه استفاده از Must Use Plugin بهترین انتخاب نیست.
در ادامه مقاله به مباحث پیشرفتهتر مانند:
خواهیم پرداخت.
در پروژههای سازمانی و فروشگاههای بزرگ، مدیریت خطا اهمیت حیاتی دارد.
از آنجایی که MU Plugins وردپرس قبل از سایر افزونهها اجرا میشوند،
در صورت بروز خطا ممکن است کل سایت از دسترس خارج شود.
بنابراین باید سیستم ثبت لاگ حرفهای داشته باشید.
function sitecore_log($message) {
if (defined('WP_DEBUG') && WP_DEBUG) {
if (is_array($message) || is_object($message)) {
error_log(print_r($message, true));
} else {
error_log($message);
}
}
}
با این روش میتوانید خطاها را در فایل debug.log بررسی کنید.
یکی از اشتباهات رایج در توسعه Must Use Plugin عدم مدیریت نسخه است.
حتی اگر این افزونهها از پنل مدیریت قابل بروزرسانی نباشند،
باید سیستم Versioning داخلی داشته باشند.
define('SITECORE_MU_VERSION', '1.2.0');
add_action('init', function() {
$installed_version = get_option('sitecore_mu_version');
if ($installed_version !== SITECORE_MU_VERSION) {
update_option('sitecore_mu_version', SITECORE_MU_VERSION);
// اجرای اسکریپتهای آپدیت دیتابیس
}
});
این روش برای اجرای Migration های دیتابیس بسیار کاربردی است.
به دلیل اجرای زودهنگام MU Plugins، برخی هوکها هنوز در دسترس نیستند.
بنابراین باید بدانید کدام Hook مناسب کدام عملیات است.
add_action('muplugins_loaded', function() {
sitecore_log('MU Plugins fully loaded.');
});
خیر. Must Use Plugins به صورت اجباری فعال هستند و تنها از طریق حذف فایل از سرور غیرفعال میشوند.
بله. شما میتوانید از add_menu_page برای ساخت صفحه تنظیمات استفاده کنید، اما افزونه همچنان قابل غیرفعالسازی نخواهد بود.
در سایتهای ساده معمولاً نیازی به آن نیست، اما در پروژههای حرفهای و فروشگاهی توصیه میشود.
بله. هر فایل PHP موجود در پوشه mu-plugins به صورت جداگانه بارگذاری میشود.