×
خانه » مقالات » MU-Plugins: جایگزینی امن برای functions.php در وردپرس
19 مرداد 1404

MU-Plugins: جایگزینی امن برای functions.php در وردپرس

MU-Plugins: جایگزینی امن برای functions.php در وردپرس

“این کد رو بذار داخل فایل functions.php قالب!” این جمله‌ای است که بسیاری از کاربران وردپرس برای اضافه کردن کدهای PHP به سایت خود می‌شنوند. این روش به‌نظر سریع و آسان می‌آید، اما در واقع مشکلاتی ایجاد می‌کند که می‌تواند باعث از دست رفتن کدهای مهم شود. به‌ویژه زمانی که به کدهای حیاتی مانند موارد امنیتی یا منطق کسب‌وکار نیاز دارید، این روش می‌تواند خطرناک باشد.

اگر از functions.php برای اضافه کردن کدهای حیاتی استفاده کنید، با تغییر یا به‌روزرسانی قالب، این کدها حذف خواهند شد و سایت شما در معرض خطر قرار می‌گیرد. به جای این روش، می‌توانید از MU-Plugins استفاده کنید؛ افزونه‌هایی که همیشه فعال هستند و از تغییرات قالب بی‌تأثیرند.

چالش واقعی: امنیت و دسترسی به سایت

برای روشن شدن بهتر موضوع، بیایید این موضوع را با یک مثال ساده توضیح دهیم: فرض کنید می‌خواهید دسترسی به پنل مدیریت وردپرس را فقط به IPهای خاص محدود کنید. اگر این کد را در فایل functions.php قرار دهید، در صورت تغییر قالب یا آپدیت آن، کد شما از بین خواهد رفت. در عوض، با استفاده از MU-Plugins، می‌توانید این سیاست را برای همیشه فعال نگه دارید و حتی در صورت تغییر قالب یا نصب افزونه‌های جدید، امنیت سایت شما تحت تأثیر قرار نخواهد گرفت.

MU-Plugins چیست؟

MU-Plugins (Must Use Plugins) افزونه‌هایی هستند که بدون نیاز به فعال‌سازی، همیشه فعال می‌مانند. این افزونه‌ها قبل از افزونه‌های معمولی در وردپرس لود می‌شوند و به‌طور خودکار از پیشخوان قابل غیرفعال‌سازی نیستند. این ویژگی‌ها باعث می‌شود که MU-Plugins برای کدهای حیاتی مانند سیاست‌های امنیتی، منطق کسب‌وکار و کدهای اصلی سایت، انتخاب مناسبی باشند.

ایجاد پوشه و فایل MU-Plugin

  1. به هاست یا سرور خود وصل شوید.
  2. وارد پوشه wp-content شوید.
  3. اگر پوشه mu-plugins وجود ندارد، آن را بسازید. (این پوشه به صورت پیش فرض وجود ندارد)
  4. در داخل این پوشه، یک فایل PHP به نام nabik.php بسازید.
  5. کدهای خود را داخل این فایل قرار دهید.

مثال عملی: محدود کردن ورود به پنل مدیریت برای IPهای خاص

در این مثال، تنها IPهای مشخص به پنل مدیریت وردپرس دسترسی خواهند داشت:

<?php
/*
Plugin Name: Nabik Security - Restrict Admin Login
Description: محدود کردن ورود به پنل مدیریت برای IPهای مجاز
Author: Nabik
*/

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

// لیست IPهای مجاز
$allowed_ips = [
    '123.45.67.89', // دفتر مرکزی
    '98.76.54.32',  // لپ‌تاپ شخصی
];

// بررسی درخواست‌های ورود و بخش مدیریت
if ( is_admin() || $GLOBALS['pagenow'] === 'wp-login.php' ) {
    if ( ! in_array( $_SERVER['REMOTE_ADDR'], $allowed_ips ) ) {
        wp_die('دسترسی شما به بخش مدیریت محدود شده است.');
    }
}

این کد از ورود کاربران غیرمجاز به پیشخوان جلوگیری می‌کند و تا زمانی که این فایل در پوشه MU-Plugins باشد، همیشه فعال خواهد بود.

ایجاد لودر برای مدیریت چند فایل MU-Plugin

اگر می‌خواهید چندین فایل MU-Plugin را در پوشه‌ای جداگانه نگه دارید، می‌توانید از یک لودر برای لود کردن این فایل‌ها استفاده کنید. این کار به شما کمک می‌کند که ساختار سایت‌تان مرتب و قابل مدیریت باشد.

  1. ایجاد یک فایل لودر در مسیر wp-content/mu-plugins/nabik-loader.php
  2. قرار دادن فایل‌های مختلف در پوشه‌ای مانند wp-content/mu-plugins/nabik/
  3. در فایل لودر، تمام فایل‌های داخل پوشه nabik را لود کنید.

فایل لودر:

<?php
/*
Plugin Name: Nabik MU Loader
Description: لودر فایل‌های MU برای ساختاردهی بهتر
Author: Nabik
*/

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

$dir = __DIR__ . '/nabik';

if ( is_dir($dir) ) {
    foreach ( glob($dir . '/*.php') as $file ) {
        require_once $file;
    }
}

ساختار پوشه‌ها:

wp-content/
  mu-plugins/
    nabik-loader.php
    nabik/
      security-login-ip.php
      hardening.php

چرا MU-Plugins بهتر از functions.php است؟

ویژگیMU-Pluginsfunctions.php
با تغییر قالب حذف می‌شود؟❌ نه✅ بله
امکان غیرفعال‌سازی از پیشخوان❌ نه❌ وابسته به قالب
زمان لودقبل از همه افزونه‌هاهمراه قالب
مناسب برایامنیت، منطق حیاتیتغییرات وابسته به ظاهر
آپدیت و نگهداریدستیهمراه قالب

نکات مهم MU-Plugins

  • برای کدهای سبک و حیاتی ایده‌آل هستند، ولی از گذاشتن منطق سنگین در آن‌ها خودداری کنید.
  • استفاده از لودر برای مدیریت چندین فایل MU-Plugin می‌تواند به شما کمک کند که ساختار مرتب‌تری داشته باشید.
  • MU-Plugins هیچ وقت غیرفعال نمی‌شوند و تا زمانی که فایل در پوشه mu-plugins باشد، به‌طور خودکار اجرا می‌شود.
  • در صورت بروز مشکل، با حذف یا تغییر نام فایل از طریق FTP می‌توانید آن را غیرفعال کنید.

MU-Plugins یک روش امن و حرفه‌ای برای نگهداری کدهای حیاتی وردپرس هستند. به‌جای قرار دادن این کدها در functions.php، آن‌ها را در یک MU-Plugin قرار دهید تا همیشه فعال بمانند، بدون اینکه به قالب یا افزونه‌های دیگر وابسته باشند.

این آموزش توسط تیم نابیک برای بهبود عملکرد و تجربه کاری سایت‌های وردپرسی ارائه شده است. اگر سوالی دارید یا به کمک بیشتری نیاز دارید، حتماً در بخش نظرات با ما در ارتباط باشید!

شقایق حاجیان

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *