آموزش 10 ترفند wp-config برای بهینه سازی سایت وردپرسی شما
بسیاری از صاحبان وبسایت های وردپرسی ممکن است در تمام زمان استفاده از وبسایت خود، حتی یک بار هم به فایل تنظیمات وردپرس یا همان Wp-config.php سر نزنند. (خصوصا حالا که موقع نصب هم نیازی به ویرایش دستی این فایل نیست) اما واقعیت این است که دقیقا مانند یک ساختمان که از روی نقشه ای از پیش طراحی شده، ساخته میشود، این فایل هم دقیقا در حکم یک نقشه از پیش طراحی شده، نحوه رفتار وبسایت وردپرسی شما را تعیین میکند. در واقع با اطمینان میتوان گفت، کمی توجه بیشتر به این فایل و امکاناتی که می تواند در اختیار ما قرار دهد، در دراز مدت تفاوت بسیار زیادی در کیفیت استفاده ما از وردپرس ایجاد خواهد کرد.
در این آموزش تقریبا کوتاه قصد داریم 10 ترفند جالب برای ویرایش این فایل را به شما آموزش دهیم که شما را قادر میسازد، وبسایتتان را امن تر کنید و در عین حال کار خودتان را نیز حسابی آسان کنید. در ادامه با مستر کد همراه باشید.
تغییر محل فایل تنظیمات وردپرس
یکی از راه های امن تر کردن وردپرس و یا هر اسکریپتی که از فایل تنظیمات استفاده میکند، این است که فایل تنظیمات آن را از چشم دشمن دور کنیم و یا فایل را به جایی انتقال دهیم که اصلا از بیرون وبسایت قابل دسترسی نباشد و به این شکل خیال خودمان را حسابی راحت کنیم.
وردپرس در حالت پیشفرض و بدون اعمال هیچ گونه تغییرات، میتواند فایل تنظیمات خودش را حتی زمانی که یک سطح بالا تر از محل نصب خودش باشد نیز پیدا کند. یعنی اگر شما فایل wp-config.php را از public_html خود به Home خود جا به جا کنید، وردپرس بدون مشکل این فایل را یافته و مورد استفاده قرار خواهد داد. اما گاهی اوقات این کار به هر دلیلی عملی نیست و یا شما دوست ندارید از پیش فرض ها استفاده کنید. در این حال میتوانید به سادگی به روش زیر عمل کنید :
- ابتدا فایل wp-config.php را به هر جا که مایل هستید move کنید.
- حالا یک فایل wp-config.php جدید در محل نصب وردپرس خود بسازید و کد زیر را در آن قرار دهید. توجه کنید که عبارت “../path/to/wp-config.php” باید با مسیر واقعی محلی که فایل کانفیگ را در آن قرار داده این عوض شود.
1 2 | define('ABSPATH', dirname(__FILE__) . '/'); require_once(ABSPATH . '../path/to/wp-config.php'); |
تغییر محل قرار گیری فولدر wp-content
اینکه دقیقا چرا ممکن است به این کار نیاز پیدا کنید، کمی مبحث پیچیده تری است که فقط هم به یک دلیل محدود نمی شود. اما یکی از دلایلش میتواند این باشد که شاید شما خواستید وردپرستان را از طریق اتصال به SVN یا git همیشه به روز نگه دارید. طبعا کسی در این حالت مایل نیست اطلاعات با ارزشی از قبیل، قالب ها، پلاگین ها، پوشه آپلود ها و موارد مشابه را صرفا بخاطر به روز بودن از دست بدهد. خوب در این حالت کافی است که محل قرار گیری فولدر wp-content را به کلی عوض کنیم و این را به وردپرس هم اعلام کنیم. برای این کار کافی است پس از تغییر محل قرار گیری wp-content دو خط کد زیر را در فایل wp-config.php خود قرار داده و محل جدید قرارگیری wp-content را در آن ویرایش کنید.
1 2 | define( 'WP_CONTENT_DIR', dirname( __FILE__ ) . 'path/to/wp-content' ); define( 'WP_CONTENT_URL', 'http://' . $_SERVER['HTTP_HOST'] . '/path/to/wp-content' ); |
احتمالا دارید به این فکر میکنید که آیا میتوانید نام فولدر wp-content را هم عوض کنید یا نه. پاسخ مثبت است. 🙂
در زمان انجام این کار توجه داشته باشید که انجام این کار، یعنی عوض کردن محل فولدر wp-content ممکن است بعضی از افزونه ها یا تم هایی را که کدنویسی ضعیفی دارند، دچار مشکل کند. توصیه میکنم بجای اینکه از انجام این کار صرف نظر کنید، از استفاده از چنین پلاگین ها و تم هایی که از لحاظ برنامه نویسی ضعیف هستند خود داری کنید.
محل پوشه پلاگین های وردپرس را عوض کنید
تا اینجا اینگونه در نظر گرفته بودیم که پوشه ی پلاگین ها همیشه درون پوشه wp-content باقی میماند. ولی واقعیت این است که هیچ اجباری برای این مسئله وجود ندارد. شما میتوانید پوشه پلاگین های خود را نیز به محل مورد نظر خود انتقال دهید. برای اینکار میتوانید از دو خط کد زیر استفاه کنید :
1 2 | define( 'WP_PLUGIN_DIR', dirname(__FILE__) . '/path/to/plugins' ); define( 'WP_PLUGIN_URL', 'http://' . $_SERVER['HTTP_HOST'] . '/path/to/plugins' ); |
توجه کنید که حتما هر دو خط این کد ها را در فایل wp-config تعریف کنید تا با افزونه هایتان به مشکل بر نخورید. و یک نکته ی دیگر اینکه مقدار WP_PLUGIN_DIR یک مقدار نسبی است که نسبت به محل قرار گیری wp-config سنجیده میشود در حالی است که WP_PLUGIN_URL باید نشانگر محل واقعی قرار گیری فولدر پلاگین ها در حالت استفاده از url یا همان http:// باشد. اگر دقت کنید، بجای استفاده از آدرس ثابت وبسایت شما، از متغیر $_SERVER[‘HTTP_HOST’] استفاده کرده ایم. البته تصمیم با شماست.
تغییر محل قرار گیری Mu-Plugins
بله! اگر می پرسید این دیگر چیست، اجازه بدهید ابتدا کمی درباره اش برایتان توضیح بدهم. mu-plugins پلاگین هایی هستند که امکان غیر فعال کردن ندارند و به صورت اتوماتیک و پیشفرض روی وبسایت شما اجرا میشوند. به طور پیشفرض، در فولدری با نام mu-plugins که در داخل پوشه ی wp-content قرار میگیرد، به دنبال این پلاگین ها میگردد. اما خوب، مثل موارد قبلی، باز هم شما میتوانید محل قرار گیری این فولدر را نیز عوض کنید. با در نظر داشتن مواردی که در انتهای ترفند قبلی از آنها صحبت کردیم، کافی است یکی از کد های زیر را به فایل wp-config اضافه کنید :
1 2 | define( 'WPMU_PLUGIN_URL', 'http://' . $_SERVER['HTTP_HOST'] . '/path/to/mu-plugins' ); define( 'WPMU_PLUGIN_URL', 'http://example.com/path/to/mu-plugins' ); |
همانطور که میبینید، خط اول نیازی به تعریف مستقیم آدرس وبسایت شما ندارد اما در خط دوم مستقیما از آدرس وبسایت استفاده شده است. دقیقا با همین ترفند و به شکل زیر میتوانید نام این فولدر را نیز عوض کنید :
1 | define( 'WPMU_PLUGIN_URL', WP_CONTENT_URL . '/new-name' ); |
قالب پیشفرض وردپرس را عوض کنید
خوب اول ببینیم چرا ممکن است چنین چیزی را نیاز داشته باشیم. اینجا میتوانم به شما دو دلیل ساده و در عین حال خوب ارائه کنم. اول اینکه ممکن است شما یک وردپرس multisite راه اندازی کرده باشید و مایل باشید پوسته ی پیشفرض وبسایت های درون شبکه تان چیزی به غیر از پوسته ی پیشفرض وردپرس ( در حال حاضر Twenty Thirteen) باشد. دومین دلیل هم این است که اگر توجه کرده باشید، هر بار که به هر دلیلی، پوسته ی اصلی وبسایت شما قابل استفاده نباشد، مثلا حذف شده باشد، وردپرس به صورت پیشفرض یک پوسته را جایگزین قالب معیوب خواهد کرد و وبسایت شما را با آن نمایش خواهد داد. شاید شما برنامه دیگری برای این قالب پیشفرض داشته باشید! برای تنظیم پوسته ی پیشفرض در فایل wp-config میتوانید از کد زیر استفاده کنید :
1 | define('WP_DEFAULT_THEME', 'twentytwelve'); |
توجه کنید که نام پوشته ی قالب یا slug آن را در اینجا به کار ببرید. مثلا در کد بالا نوشتن Twenty Twelve صحیح نخواهد بود.
غیر فعال کردن ویرایشگر پوسته و پلاگین ها در بخش مدیریت
ویرایشگر پلاگین و قالب که در ناحیه مدیریت وردپرس در نظر گرفته شدند، امکانات بسیار کاربردی و بسیار مفیدی هستند اما احتمالا برایتان پیش آمده که یک خط کد را مثلا در فایل توابع پوسته تان ویرایش کرده اید و بعد از آن با صفحه سفید یا انواع خطا مواجه شده اید و تنها راه پیش روی شما، ویرایش مستقیم فایل از طریق مراجعه به هاست یا استفاده از FTP بوده است. از یک طرف هم فرض کنیم یک فرد خبیث، مدیریت وبسایت شما را به دست گرفت، واقعا به نظرتان جالب است که ابزار نابودی را به این راحتی جلوی دستش بگذاریم؟ نه … پس برای غیر فعال کردن ویرایشگر های قالب و پلاگین در بخش ادمین کد زیر را در فایل تنظیمات وردپرس قرار میدهیم :
1 | define('DISALLOW_FILE_EDIT', true); |
حتی میتوانید یک قدم دیگر هم جلو بروید و نصب پلاگین ها و قالب ها و حتی آپدیت ها را در بخش مدیریت کاملا غیر فعال کنید! آن هم با این کد کوچولو :
1 | define('DISALLOW_FILE_MODS', true); |
کلید Akismet را یکبار برای همیشه برای وبسایتهای شبکه multisite خود ست کنید
اکیسمت را که میشناسید؟ ضد اسپم قدرت مندی که تا به حال خیلی از ما را از شر انواع اسپم خلاص کرده و در سراسر جهان محبوبیت بسیار زیادی دارد. اما این پلاگین دوست داشتنی در شبکه های چند سایته وردپرس کمی دردسر آفرین است. دردسر کجاست؟ آنجا که کلید اکیسمت میبایست به صورت جداگانه بر روی هر سایت در شبکه ست شود. برای حل این مشکل هم چاره داریم. کافی است کلید خود را در کد زیر قرار دهید تا دیگر لازم نباشد این کلید را هر بار به صورت جداگانه برای سایت های درون شبکه مالتی سایت تعریف کنید :
1 | define('WPCOM_API_KEY','your-key'); |
Revision ها را غیر فعال کنید یا تعدادشان را محدود کنید
به صورت پیشفرض، به ازای هر تغییری که شما در محتوای پست، عنوان، خلاصه و نویسنده پست ها ایجاد میکنید، وردپرس یک رونوشت از آن تغییر ذخیره میکند. حالا فرض کنیم شما طرفدار پر و پا قرص “پیش نویس”های وردپرس باشید! آنوقت خدا به دیتابیس رحم کند. یک سری از افراد از افزونه هایی مانند CleanFix برای پاک کردن این رونوشت ها و آزاد کردن فضای دیتابیسشان استفاده میکنند اما یک سری هم زیاد اهل پلاگین ها نیستند (واقعا 100 آفرین) این افراد کافی است برای محدود کردن تعداد رونوشت ها، کد زیر را به فایل تنظیماتشان اضافه کنند :
1 | define('WP_POST_REVISIONS', 10); |
عدد 10 در اینجا حداکثر تعداد رو نوشت هایی است که وردپرس مجاز به نگهداری آنهاست. بجای استفاده از کد بالا میتوانید رونوشت ها را با کد زیر به طور کامل غیر فعال کنید :
1 | define('WP_POST_REVISIONS', false); |
اجبار SSL برای صفحه ورود
اگر میخواهید مطمئن باشید که نام کاربری و رمز عبور شما در زمان ورود به وردپرس توسط کسی سرقت نخواهد شد، لازم است برای ورود حتما از SSL استفاده کنید. البته در اینجا دو نکته را مد نظر داشته باشید، اول اینکه باید SSL روی هاست شما تنظیم شده باشد و دوم اینکه در ایران ممکن است این پروتکل کمی کند عمل کند. برای اجبار ورود از طریق پروتکل SSL کد زیر را به wp-config.php خود اضافه کنید :
1 | define('FORCE_SSL_LOGIN', true); |
در ادامه کار دیگری که میتوانید بکنید این است که با استفاده از کد زیر SSL را برای کل ناحیه مدیریت اجبار کنید :
1 | define('FORCE_SSL_ADMIN', true); |
WP_DEBUG را به میل خود تربیت کنید!!
یکی از تغییرات متداولی که بر روی فایل تنظیمات وردپرس انجام میشود استفاده از ثابت WP_DEBUG و فعال کردن یا غیر فعال کردن آن است. کار این ثابت این است که کلیه ی خطاهای وردپرس شما را در بالای صفحه سایت برای شما نمایش دهد. اگر نمیخواهید این اتفاق بیافتد، کافی است WP_DEBUG را در فایل تنظیمات غیر فعال کنید :
1 | define('WP_DEBUG_DISPLAY', false); |
توجه داشته باشید که غیر فعال کردن این ثابت، نمیتواند جلوی ایجاد صفحه سفید (white screen of death) بر اثر اتفاق افتادن خطاهای مهلک را بگیرد ولی دست کم باعث میشود در صورت وجود هشدار در کد پی اچ پی تان، صفحه شما الکی بد شکل و نا مرتب نشود. خطاهای وبسایت شما کماکان در لاگ خطاهای هاست شما قابل مشاهده خواهند بود. البته مگر اینکه WP_DEBUG_LOG را هم غیر فعال کرده باشید. اگر WP_DEBUG_LOG را فعال کرده باشید کلیه ی خطاهای وبسایت شما در فایلی به نام debug.log ذخیره شده و در اختیار شما قرار میگیرد.
این هم از 10 ترفند جالب برای بهینه سازی وبسایت وردپرسی شما. اگر شما هم ترفندی بلدید که میتواند با استفاده از اعمال تغییرات در فایل wp-config امکان جالبی به وردپرس اضافه کند و یا در آن تغییری موثر ایجاد کند، آن را با ما در میان بگذارید.
راستی، یک سری از این کارهای خوشمزه ای که با هم مرور کردیم، به سادگی با افزونه iThemes Security (و شاید خیلی افزونه های دیگر) قابل انجام است. اما خوب دانستن روش واقعی کار خیلی شیرین تر است، نه؟!
من تازه به وردپرس رو آوردم و به نظم مطالبت عالیییییی بود.