راهنمای کاربردی فایل wp-config.php

زمان لازم برای خواندن: حدود ۱۰ دقیقه
فایل wp-config.php در وردپرس

فایل wp-config.php یکی از معدود فایل‌های هسته وردپرس است که تغییر مستقیم آن نه تنها مجاز است، بلکه بخش مهمی از پیکربندی یک سایت وردپرسی از طریق همین فایل انجام می‌شود. اطلاعات اتصال به پایگاه داده، کلیدهای امنیتی، پیشوند جداول و تعداد زیادی ثوابت مورد استفاده برای تغییر رفتار وردپرس در این فایل قرار می‌گیرند.

در یک نصب معمولی وردپرس، فایل wp-config.php در پوشه روت سایت و کنار پوشه‌هایی مثل wp-admin و wp-content و wp-includes قرار دارد. توجه داشته باشید که در فایل فشرده وردپرس که از سایت سازنده دانلود می‌کنید، فایلی با این نام وجود ندارد. هنگام نصب، وردپرس براساس اطلاعاتی که وارد می‌کنید آن را ایجاد می‌کند. فایل wp-config-sample.php نیز به عنوان نمونه اولیه در بسته وردپرس وجود دارد.

فهرست مطالب

اهمیت wp-config.php

بخش زیادی از تنظیماتی که وردپرس برای شروع کار به آنها نیاز دارد، قبل از اجرای کامل هسته باید مشخص شده باشند. wp-config.php محل تعریف بسیاری از این تنظیمات است. برای مثال، وردپرس باید بداند:

  • به کدام پایگاه داده متصل شود؛
  • نام کاربری و رمز پایگاه داده چیست؛
  • جداول مربوط به این نصب چه پیشوندی دارند؛
  • سایت در چه محیطی اجرا می‌شود؛
  • عیب‌یابی (Debugging) فعال باشد یا خیر؛
  • چه مقدار حافظه در اختیار وردپرس قرار گیرد؛
  • و بعضی قابلیت‌های مدیریتی یا امنیتی چگونه رفتار کنند.

به همین دلیل خرابی این فایل می‌تواند کل سایت را از دسترس خارج کند. یک خطای سینتکس ساده در PHP یا وارد کردن اطلاعات اشتباه پایگاه داده، برای ایجاد مشکل کافی است.

پایگاه داده در wp-config.php

بخش ابتدایی یک فایل معمولی wp-config.php شامل تنظیمات اتصال به دیتابیس است:

define('DB_NAME', 'database_name');
define('DB_USER', 'database_user');
define('DB_PASSWORD', 'database_password');
define('DB_HOST', 'localhost');

این مقادیر به وردپرس می‌گویند از چه سرور پایگاه داده‌ای و با چه اطلاعات هویتی برای اتصال استفاده کند.

مقدار DB_HOST الزاماً همیشه localhost نیست. در بعضی سرویس‌های هاستینگ یا معماری‌هایی که سرور پایگاه داده از وب‌سرور جدا شده، مقدار DB_HOST متفاوتی توسط ارائه‌دهنده سرویس مشخص می‌شود.

تنظیمات Character Set و Collation دیتابیس نیز در همین قسمت قرار دارند:

define('DB_CHARSET', 'utf8mb4');
define('DB_COLLATE', '');

در یک سایت زنده، نباید این مقادیر را صرفاً با هدف «بهینه‌سازی» و بدون بررسی پایگاه داده تغییر داد.

کلیدهای احراز هویت

یکی از بخش‌های مهم در فایل wp-config.php مجموعه‌ای از Authentication Key و Saltها است:

define('AUTH_KEY',         'put your unique phrase here');
define('SECURE_AUTH_KEY',  'put your unique phrase here');
define('LOGGED_IN_KEY',    'put your unique phrase here');
define('NONCE_KEY',        'put your unique phrase here');

و مقادیر متناظر Salt مانند AUTH_SALT و SECURE_AUTH_SALT.

این مقادیر در سازوکارهای امنیتی مرتبط با احراز هویت و کوکی‌های وردپرس استفاده می‌شوند و باید تصادفی و غیرقابل حدس باشند. دقت کنید که با توجه به اهمیت این کلیدها، مقادیر واقعی Keys و Salts را نیز نباید در ریپازیتوری‌های عمومی، اسکرین‌شات‌ها، تیکت‌های پشتیبانی یا نمونه تنظیمات منتشر کنید.

یکی از کاربردهای عملی تغییر Keys و Salts زمانی است که می‌خواهید نشست‌های فعال کاربران نامعتبر شوند. پس از تغییر این مقادیر، کوکی‌های موجود دیگر اعتبار قبلی را نخواهند داشت و کاربران باید دوباره وارد حساب خود شوند. در صورت نیاز به تولید مجدد ، می‌توانید مقادیر جدید را از سرویس رسمی وردپرس دریافت کنید. برای این کار کافیست آدرس زیر را در مرورگر خود باز کنید تا سالت‌های جدید برای شما تولید شوند.

https://api.wordpress.org/secret-key/1.1/salt/

پیشوند جداول

در فایل wp-config.php معمولاً خطی شبیه زیر دیده می‌شود:

$table_prefix = 'wp_';

این مقدار پیشوند جداول وردپرس در پایگاه داده را تعیین می‌کند. برای مثال، با پیشوند پیش‌فرض نام برخی جداول به شکل زیر خواهد بود:

wp_posts
wp_users
wp_options

طبق مستندات وردپرس، پیشوند جداول می‌تواند ترکیبی از حروف و اعداد انگلیسی و علامت _ باشد.

یکی از کاربردهای مهم آن زمانی است که چند نصب متفاوت وردپرس از یک پایگاه داده مشترک استفاده می‌کنند. هر نصب می‌تواند پیشوند متفاوتی داشته باشد تا جداول آنها با یکدیگر تداخل نکنند.

تغییر پیشوند جداول وردپرس روی یک سایت فعال فقط با تغییر همین یک متغیر انجام نمی‌شود؛ جداول و بعضی داده‌های مرتبط نیز باید متناسب با ساختار سایت، مهاجرت داده شوند. بنابراین تغییر تصادفی آن می‌تواند باعث شود وردپرس جداول فعلی سایت را پیدا نکند.

تعیین آدرس سایت

دو مورد از ثوابت مهمی که می‌توان در wp-config.php تعریف کرد عبارت‌اند از:

define('WP_HOME', 'https://example.com');
define('WP_SITEURL', 'https://example.com');

این دو مقدار یک مفهوم کاملاً یکسان ندارند! ثابت WP_SITEURL آدرسی را مشخص می‌کند که فایل‌های اصلی وردپرس در آن قرار دارند، در حالی که ثابت WP_HOME آدرسی است که کاربران برای دسترسی به سایت استفاده می‌کنند. در نصب‌های معمولی وردپرس هر دو ممکن است یک مقدار داشته باشند، اما اگر وردپرس در یک زیرپوشه نصب شده باشد، امکان متفاوت بودن آن‌ها وجود دارد.

تعریف این ثوابت در فایل wp-config.php، مقدار متناظر موجود در جدول wp_options را بازنویسی می‌کند، اما مقدار ذخیره‌شده در پایگاه داده را تغییر نمی‌دهد. اگر خطوط مربوط به آن‌ها بعداً از wp-config.php حذف شوند، وردپرس دوباره مقدار پایگاه داده را در نظر می‌گیرد.

مدیریت رونوشت‌ها

وردپرس به‌صورت پیش‌فرض رونوشت (revision) نوشته‌ها و برگه‌ها را نگه می‌دارد. می‌توان تعداد آن‌ها را با قرار دادن کد زیر در فایل wp-config.php محدود کرد:

define('WP_POST_REVISIONS', 5);

در این مثال، حداکثر تعداد رونوشت‌های ذخیره‌شده به ۵ محدود می‌شود. البته امکان غیرفعال‌کردن آن‌ها نیز وجود دارد:

define('WP_POST_REVISIONS', false);

اما خاموش‌کردن کامل رونوشت‌ها معمولاً انتخاب مناسبی نیست؛ قابلیت بازگشت به نسخه‌های قبلی محتوا در بسیاری از سایت‌ها ارزشمند است. برای سایت‌هایی که حجم بالایی از ویرایش محتوا دارند، تعیین یک محدودیت منطقی می‌تواند انتخاب متعادل‌تری باشد.

تغییر زمان بین ذخیره‌های خودکار

وردپرس هنگام ویرایش محتوا به‌صورت دوره‌ای ذخیره خودکار انجام می‌دهد. مقدار پیش‌فرض این فاصله طبق مستندات رسمی ۶۰ ثانیه است که می‌توان آن را تغییر داد:

define('AUTOSAVE_INTERVAL', 180);

عدد برحسب ثانیه است؛ در این مثال، ذخیره خودکار محتوا هر سه دقیقه یک بار انجام می‌شود.

دقت داشته باشید که افزایش بیش از حد این مقدار می‌تواند ریسک از دست رفتن آخرین تغییرات را در صورت بسته شدن مرورگر یا بروز سایر مشکلات فنی افزایش دهد. بنابراین تغییر آن باید دلیل مشخصی داشته باشد، نه اینکه صرفاً به‌عنوان یک «ترفند افزایش سرعت وردپرس» استفاده شود.

فعال کردن مولتی سایت

یکی دیگر از ثابت‌های شناخته شده فایل wp-config.php مسئول فعال‌سازی قابلیت مولتی سایت است:

define('WP_ALLOW_MULTISITE', true);

با تعریف این ثابت در فایل تنظیمات وردپرس، قابلیت راه‌اندازی وردپرس شبکه یا همان مولتی سایت وردپرس در دسترس قرار می‌گیرد. مولتی سایت برای شرایطی مناسب است که چند سایت وردپرس باید تحت یک شبکه مشترک مدیریت شوند. البته اضافه‌کردن این ثابت به‌تنهایی تمام مراحل راه‌اندازی مولتی سایت را انجام نمی‌دهد و پس از آن، تنظیمات دیگری نیز لازم است.

جابه‌جایی مسیر پوشه‌ها

یکی از قابلیت‌های کمتر استفاده شده wp-config.php امکان تغییر محل نگهداری پوشه‌های کلیدی وردپرس است.

برای تغییر مسیر پوشه wp-content:

define('WP_CONTENT_DIR', dirname(__FILE__) . '/content');
define('WP_CONTENT_URL', 'https://example.com/content');

برای تغییر مسیر پوشه افزونه‌ها:

define('WP_PLUGIN_DIR', dirname(__FILE__) . '/addons');
define('WP_PLUGIN_URL', 'https://example.com/addons');

برای تغییر مسیر پوشه آپلودها:

define('UPLOADS', 'blog/uploads');

این قابلیت بیشتر در معماری‌های سفارشی و استقرارهای خاص کاربرد دارد. تغییر ساختار استاندارد پوشه‌ها بدون نیاز واقعی می‌تواند سازگاری با افزونه‌ها و ابزارها یا تنظیمات سرور را پیچیده‌تر کند.

ویرایش مرتب wp-config.php

سوالی که ممکن است برای شما پیش بیاید این است که آیا باید wp-config.php را مرتب ویرایش کنیم؟

پاسخ این سوال، خیر است. وجود تنظیمات فراوان در wp-config.php به این معنا نیست که همه آنها باید در هر سایت تعریف شوند. بسیاری از ثابت‌های این فایل، مقادیر پیش‌فرض مناسبی دارند و فقط در شرایط مشخص باید بازنویسی شوند. یک کانفیگ خوب معمولاً کانفیگی نیست که ده‌ها ثابت متنوع و «ترفند بهینه‌سازی» داخل آن کپی/پیست شده باشد؛ کانفیگ خوب فقط تنظیماتی را بازنویسی می‌کند که پروژه واقعاً به آنها نیاز دارد!

قبل از ویرایش wp-config.php

قبل از تغییر فایل wp-config.php در نظر داشته باشید که:

  • از نسخه فعلی آن بکاپ بگیرید.
  • مطمئن شوید راه دسترسی به فایل‌ها از طریق SSH یا FTP یا فایل منیجر را دارید.
  • سینتکس کد PHP را دقیق بررسی کنید.
  • تنظیماتی را که نمی‌شناسید از سایت‌های مختلف کپی/پیست نکنید.
  • اطلاعات حساس مانند رمز عبور پایگاه داده یا کلیدهای احراز هویت را منتشر نکنید.
  • در صورت امکان، تغییر مهم را ابتدا روی Staging آزمایش کنید.

وردپرس در مستندات رسمی تنظیمات پیشرفته wp-config.php نیز صراحتاً توصیه می‌کند قبل از تغییر این گزینه‌ها بکاپ منظم داشته باشید و روش استفاده از بکاپ را بدانید.

پرسش‌های متداول

  1. فایل wp-config.php در وردپرس چیست؟

    فایل wp-config.php فایل اصلی پیکربندی وردپرس است که تنظیماتی مانند اطلاعات اتصال به پایگاه داده، اطلاعات احراز هویت، پیشوند جداول و برخی ثوابت مهم وردپرس در آن تعریف می‌شوند. وردپرس هنگام اجرا، برای دسترسی به این تنظیمات از فایل wp-config.php استفاده می‌کند.

  2. فایل wp-config.php وردپرس کجاست؟

    در یک نصب معمولی، فایل wp-config.php در پوشه روت وردپرس قرار دارد؛ یعنی همان مسیری که پوشه‌های wp-admin و wp-content و wp-includes را می‌بینید. وردپرس همچنین امکان قرار دادن این فایل یک سطح بالاتر از محل نصب را در شرایط مشخص پشتیبانی می‌کند.

  3. آیا ویرایش wp-config.php خطرناک است؟

    ویرایش فایل wp-config.php در صورت انجام صحیح مشکلی ندارد و بسیاری از تنظیمات رسمی وردپرس از همین طریق انجام می‌شوند. با این حال، یک خطای نگارشی یا تغییر اشتباه اطلاعات پایگاه داده می‌تواند سایت را از دسترس خارج کند. بهتر است قبل از ویرایش، از فایل خود بکاپ تهیه کنید.

  4. آیا تغییر پیشوند جداول، امنیت وردپرس را افزایش می‌دهد؟

    استفاده از پیشوند متفاوت به تنهایی نباید به عنوان یک راهکار اصلی امنیتی در نظر گرفته شود. کاربرد مهم این ثابت، مشخص کردن پیشوند جداول و امکان استفاده چند نصب وردپرس از یک پایگاه داده است. در یک سایت فعال نیز تغییر پیشوند جداول فقط با ویرایش متغیر table_prefix انجام نمی‌شود و نیازمند تغییرات هماهنگ در پایگاه داده است.

  5. چرا تغییرات WP_POST_REVISIONS اعمال نمی‌شود؟

    در برخی حالات خاص، ممکن است نیاز باشد که خط مربوط به تغییر WP_POST_REVISIONS را به ابتدای فایل wp-config.php خود منتقل کنید.

در مجموعه نوشته‌های ایمن‌سازی وردپرس، در خصوص اهمیت برخی تنظیمات موجود در فایل wp-config.php توضیح داده شده که در صورت تمایل می‌توانید مروری بر آنها داشته باشید.


آخرین به‌روزرسانی: ۲۷ مهر ۱۴۰۵ | برچسب‌ها:

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

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

مشاوره رایگان

علاقمند به یادگیری طراحی سایت یا دنبال مشاوره در این زمینه هستی؟