آموزش کار با وردپرس مولتیسایت
وردپرس مولتیسایت (WordPress Multisite) چه زمانی انتخاب درستی است و چطور بدون افت سرعت و امنیت، شبکهای از سایتها را روی یک نصب مدیریت کنیم؟ راهنمای عملی.
سالها پیش در پروژهای که یک دانشگاه میخواست برای هر دانشکده یک سایت جدا داشته باشد، پیشنهاد اول مدیر فنی، نصب چند نمونه وردپرس جدا بود. بعد از دو ماه، بهدلیل هزینه هاست، بهروزرسانیهای مکرر و مدیریت چند پنل، تصمیم گرفتیم روی وردپرس مولتیسایت (WordPress Multisite) مهاجرت کنیم. آن پروژه بهخوبی به پایان رسید، ولی مسیرش پر از درسهای ریز بود که در هیچ مستند رسمی نگفته بودند. این مقاله، همان درسهاست.
مولتیسایت دقیقاً چیست؟
وردپرس مولتیسایت (که قبلاً WordPress MU نامیده میشد و از وردپرس ۳.۰ بخشی از هسته شده) قابلیتی است که اجازه میدهد یک نصب وردپرس، چندین سایت مستقل را مدیریت کند. هر سایت دامنه یا زیردامنه خودش را دارد، محتوای خودش را دارد، ولی همه در یک دیتابیس و یک پوشه فایل مشترک زندگی میکنند.
این تعریف ساده، پیامدهای عمیقی دارد. اگر با ساختار کلی وردپرس آشنا نیستید، ابتدا وردپرس چیست را بخوانید. تفاوت اصلی این است که در نصب تکی، هر سایت دیتابیس و فایلهای جدا دارد؛ در مولتیسایت، همه در یک ساختار بههمپیوسته زندگی میکنند.
مولتیسایت، ساختاری برای «شبکه سایتها» است، نه راهی برای صرفهجویی در هزینه هاست.
چه زمانی مولتیسایت و چه زمانی سایتهای جدا؟
این سوال، مهمترین سوال این مقاله است. تجربهام میگوید اکثر پروژههایی که با مولتیسایت شکست میخورند، اصلاً نباید سراغش میرفتند. جدول تصمیم من:
| سناریو | انتخاب درست |
|---|---|
| چند سایت با قالب و افزونههای متفاوت | سایتهای جدا |
| چند سایت با ساختار مشترک، برند مشترک | مولتیسایت |
| شبکهای از بلاگرها زیر یک پلتفرم | مولتیسایت |
| چند فروشگاه مستقل با نیازمندیهای متفاوت | سایتهای جدا |
| سایتهای چندزبانه یک کسبوکار | مولتیسایت |
| چند مشتری مختلف با نیازهای مجزا | سایتهای جدا |
قاعده سرانگشتی: اگر سایتها را میتوان در یک ساختار مشترک مدیریت کرد، مولتیسایت درست است. اگر هر سایت هویت و نیازمندی مستقل دارد، نصب تکی بهتر است — حتی اگر هزینه هاست بیشتر شود.
معماری داخلی: دیتابیس و فایلها
فهم این بخش، برای عیبیابی و مهاجرت حیاتی است. وقتی مولتیسایت را فعال میکنید، وردپرس جدولهای جدیدی در دیتابیس میسازد:
wp_blogs— لیست همه سایتهای شبکه.wp_site— اطلاعات اصلی شبکه.wp_sitemeta— تنظیمات کل شبکه.wp_signups— ثبتنامهای در انتظار تأیید.- جداول هر سایت: برای سایت شماره ۱،
wp_1_posts،wp_1_optionsو... و برای سایت شماره ۲،wp_2_posts،wp_2_optionsو...
این ساختار یعنی هر زیرسایت، جدولهای مخصوص خودش را دارد. اگر شبکه ۱۰۰ سایت داشته باشد، دیتابیس میتواند هزاران جدول داشته باشد. این خودش میتواند به گلوگاه سرعت تبدیل شود، بهخصوص اگر روی MySQL سرور اشتراکی اجرا شود. راه تحلیل این موضوع در تأثیر دیتابیس بر سرعت سایت آمده است.
در بخش فایلها، وردپرس پوشه wp-content/uploads را بهاشتراک میگذارد ولی فایلهای هر سایت را در پوشه sites/{id}/ جدا میکند.
در مولتیسایت، دیتابیس یکپارچه است ولی معنایش این نیست که همهچیز بهاشتراک گذاشته میشود؛ هر سایت، دادههای خودش را دارد.
راهاندازی: از فعالسازی تا اولین زیرسایت
فعالسازی مولتیسایت در وردپرس، چند مرحله دقیق دارد:
- بکاپ کامل: قبل از هر اقدامی، فایل و دیتابیس. راهنما در بکاپ وردپرس.
- غیرفعالسازی افزونهها: همه افزونهها را موقتاً غیرفعال کنید تا در فرآیند اختلال ایجاد نکنند.
- ویرایش wp-config.php: این خط را اضافه کنید:
define( 'WP_ALLOW_MULTISITE', true ); - ورود به پیشخوان: در بخش Tools → Network Setup، تنظیمات اولیه را وارد کنید.
- انتخاب زیردامنه یا زیرپوشه: پیش از این مرحله تصمیم بگیرید؛ بعداً تغییرش سخت است.
- ویرایش مجدد wp-config.php: وردپرس کدهای لازم را نشان میدهد. آنها را کپی کنید.
- ویرایش .htaccess: کدهای rewrite را اضافه کنید.
- ورود مجدد به پیشخوان: حالا Network Admin در نوار بالا ظاهر میشود.
/* در wp-config.php */
define( 'WP_ALLOW_MULTISITE', true );
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', true );
define( 'DOMAIN_CURRENT_SITE', 'example.com' );
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );
پس از این مرحله، میتوانید از بخش Sites → Add New، زیرسایت جدید بسازید.
مدیریت کاربران و نقشها در شبکه
مدیریت کاربران، یکی از تفاوتهای اصلی مولتیسایت با نصب تکی است. در شبکه، کاربران در سطح شبکه تعریف میشوند ولی نقش هر کاربر در هر سایت، جداگانه تعیین میشود. یعنی یک کاربر میتواند در سایت A مدیر باشد و در سایت B فقط نویسنده.
نقشهای پیشفرض وردپرس در سطح شبکه:
- Super Admin: دسترسی کامل به همه شبکه و همه سایتها.
- Administrator: مدیر یک سایت خاص.
- Editor، Author، Contributor، Subscriber: نقشهای استاندارد در هر سایت.
مدیریت چند صد کاربر در شبکه، با ابزارهای پیشفرض دشوار است. افزونههای تخصصی مدیریت کاربران را در بهترین افزونههای مدیریت کاربران مقایسه کردهام.
یک نکته امنیتی مهم: در شبکهای که کاربران میتوانند سایت بسازند، امکان سوءاستفاده وجود دارد. حتماً ثبتنام را محدود کنید و حسابهای جدید را در انتظار تأیید بگذارید. اصول امنیتی را در راهنمای امنیت وردپرس و افزونههای امنیت ورود آوردهام.
قالب و افزونه در شبکه
در مولتیسایت، نصب قالب و افزونه در سطح شبکه انجام میشود. مدیر شبکه میتواند تعیین کند کدام قالب و افزونهها توسط مدیران سایتها نصب و فعال شوند:
- Network Activate: افزونه در همه سایتها فعال است و مدیر سایت نمیتواند غیرفعالش کند.
- Network Deactivate: افزونه در دسترس هست ولی هر سایت باید فعالش کند.
- Hide from Sites: مدیران سایت نمیبینند.
این سطح کنترل، مزیت اصلی مولتیسایت است: میتوانید افزونههای حساس مانند امنیت و بکاپ را در همه سایتها اجباری کنید.
نکته مهم: بعضی افزونهها با مولتیسایت سازگار نیستند و فقط در نصب تکی کار میکنند. قبل از انتخاب افزونه برای شبکه، سازگاریاش را با Multisite بررسی کنید. مقایسه افزونههای ضروری در بهترین افزونههای کش وردپرس و افزایش سرعت وردپرس.
در مولتیسایت، هر افزونهای که نصب میکنید باید در سه سطح امتحان شود: سازگاری با هسته شبکه، سازگاری با زیرسایتها، و اثرش روی سرعت همه سایتها.
زیردامنه یا زیرپوشه؟
پیش از راهاندازی، باید یکی از این دو را انتخاب کنید:
| حالت | نمونه | مناسب برای |
|---|---|---|
| زیردامنه (Subdomain) | site1.example.com | سایتهای مستقل، برندهای متفاوت |
| زیرپوشه (Subdirectory) | example.com/site1 | سایتهای مرتبط، مجله، چندزبانه |
زیردامنه نیاز به رکورد DNS و SSL Wildcard دارد ولی جدایی فنی بهتری میدهد. زیرپوشه سادهتر است ولی محدودیتهایی در پیکربندی SSL و CDN دارد.
در پروژههای چندزبانه، زیرپوشه انتخاب بهتری است چون ساختار URL یکپارچهتر است. در پروژه دانشگاهی که اشاره کردم، زیردامنه انتخاب شد چون هر دانشکده برند مستقل میخواست.
سرعت و کش در شبکه
مولتیسایت بهصورت پیشفرض، چالشهای سرعت بزرگتری از نصب تکی دارد:
- حجم دیتابیس: تعداد جدولها با هر زیرسایت رشد میکند.
- بار PHP: هر ریکوئست باید بین چند سایت مسیریابی شود.
- کش سروری: کش صفحه باید بر اساس هر سایت جداگانه باشد.
راهحلهای عملی:
- LiteSpeed Cache: در حالت Multisite با تنظیمات اختصاصی کار میکند.
- Object Cache با Redis: برای پیشخوان و دیتابیس، تفاوت را احساس میکنید.
- CDN: برای فایلهای استاتیک همه سایتها.
در شبکههای بزرگ، تنها راه حفظ سرعت، استفاده از سرور اختصاصی یا VPS مدیریتشده است. مسیر تحلیل در تأثیر هاست بر سرعت سایت و وردپرس مولتیسایت آمده است.
امنیت: تفاوت با نصب تکی
در مولتیسایت، هر سایت، سطح حملهای جدا برای شبکه است. یک افزونه نال در سایت شماره ۴۷ میتواند کل شبکه را آلوده کند. سه نکته امنیتی حیاتی:
- محدودسازی دسترسی Super Admin: فقط افرادی که واقعاً به کل شبکه نیاز دارند، این نقش را داشته باشند.
- محدودسازی نصب افزونه: فقط مدیر شبکه بتواند افزونه نصب کند. این گزینه در تنظیمات شبکه فعال است.
- پایش فایلها: در شبکه، تغییر یک فایل میتواند روی همه سایتها اثر بگذارد.
الگوی من در پروژهها: Super Admin فقط دو یا سه نفر، Administrator برای هر سایت، و هیچ کاربری بدون 2FA اجازه دسترسی نداشته باشد.
بکاپ شبکه
بکاپ در مولتیسایت، چالشهای خاص خودش را دارد:
- حجم بکاپ: با رشد تعداد سایتها، حجم دیتابیس و فایلها بهشدت افزایش مییابد.
- زمان بکاپ: بکاپ کامل ممکن است ساعتها طول بکشد و روی سایتهای پربازدید اختلال ایجاد کند.
- بازیابی: بازیابی بخشی از یک زیرسایت، دشوارتر از بازیابی یک سایت تکی است.
راهکار من در پروژههای مولتیسایت:
- بکاپ دیتابیس روزانه در ساعات کمترافیک.
- بکاپ فایلها هفتگی.
- بکاپ جداگانه برای زیرسایتهای حساس.
- تست بازیابی هر سه ماه یک بار.
راهنمای تفصیلی در بکاپ وردپرس و بکاپ دیتابیس وردپرس آمده است.
مهاجرت و شکستن شبکه
دو مهاجرت در مولتیسایت، دردناکترین تجربههای کار من بودهاند:
- تبدیل نصب تکی به مولتیسایت: باید همه دادهها منتقل شوند و هر سایت به یک زیرسایت جدید تبدیل شود. ابزارهای محدودی برای این کار وجود دارد.
- شکستن شبکه به سایتهای جدا: برعکس مرحله قبل، حتی پیچیدهتر. باید جداول هر سایت جدا شوند و در دیتابیسهای مستقل قرار بگیرند.
مسیر مهاجرت سادهتر در مهاجرت سایت وردپرسی به هاست جدید آمده است. اگر قصد تغییر هاست شبکه را دارید، پیش از هر اقدامی، تست کامل روی staging انجام دهید.
تصمیم نهایی
وردپرس مولتیسایت ابزار قدرتمندی است، ولی برای همه پروژهها مناسب نیست. تصمیم درست در سه جمله خلاصه میشود: اگر سایتها ساختار مشترک دارند و باید از یک پنل مدیریت شوند، مولتیسایت؛ اگر هر سایت هویت مستقل دارد، نصب تکی؛ و در همه حال، پیش از انتخاب، سرعت، امنیت و پشتیبانی بلندمدت شبکه را جدی بگیرید. تجربه من این است که حدود نیمی از پروژههایی که با مولتیسایت شروع میشوند، در سال دوم به سایتهای جدا برمیگردند — نه بهخاطر ضعف وردپرس، بلکه بهخاطر انتخاب اشتباه در نقطه شروع. اگر در پروژهای با سناریوی خاصی روبهرو شدهاید، در دیدگاهها بنویسید تا همان مسیر را بازتر کنم. 🌐