مستندات وردپرس

تغییر استاندارد ساختار پوشه های وردپرس

بطور کلی هسته ی وردپرس (WordPress) شامل سه پوشه زیر هست:

  1. پوشه wp-includes که شامل کلاس ها و توابع اصلی هسته ی وردپرس می باشد به طوری که عملکردهای پایه ای وردپرس مثل مکانیزم پایگاه داده ، نحوه ی اجرای قالب و . در این بخش برنامه نویسی شده اند.
  2. پوشه ی wp-admin که شامل تمامی توابع مربوط به بخش مدیریت وردپرس می باشد چنانچچه دقت کنید زمانی که در صفحات مدیریت وردپرس هستید همواره فایل های PHP در این پوشه هستند که فراخوانی می شوند
  3. پوشه ی wp-content که موضوع بحث امروز ما میباشد و شامل فایل ها و محتواهای وب سایت شما میباشد مانند افزونه های نصب شده ، قالب ها و پوشه هار ترجمه و کش وب سایت.

تفاوت دو سایت وردپرسی در چیست؟

تعریف دقیق هسته ی وردپرس یعنی فایل ها و پوشه های وردپرس که ما تحت هیچ شرایطی اجازه تغییر در آن ها را نداریم که شامل پوشه های wp-admin و wp-includes به همراه تمامی فایل های PHP که در ریشه ی رودپرس قرار دارند.پس اگر بخواهیم تفاوت دو وب سایت وردپرسی را بیان کنیم موارد زیر هست:

  1. پوشه ی wp-content یعنی قالب و افزونه هایی که هر سایت مختص به خود را دارد
  2. پایگاه داده (MySQL) که در آن مطالب و محتویات سایت شما گنجانده شده است
  3. فایل wp-config.php که مربوط به تنظیمات پایگاه داده وب سایت شما می باشد.

وردپرس به ما اجازه ی تغییر در ساختار پوشه های wp-content را به شکل کاملا استاندارد داده است به ویژه برای افزایش امنیت وردپرس می توانیم این فولدر ها را تغییر نام و یا حتی جابه جایی مکان به صورت کامل دهیم.

ثابت سازی آدرس وب سایت وردپرس

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

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

define('WP_HOME', 'https://realwp.net');
define('WP_SITEURL', 'https://realwp.net');

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

تغییر نام پوشه wp-contentدر وردپرس

برای تغییر نام پوشه wp-content ابتدا از بخش File Manager هاست خود آن را به نام دلخواه (انگلیسی) تغییر دهید ، من همیشه در برنامه نویسی وردپرس و پروژه ها آن را به نام public تغییر می دهم . حال میبایست وردپرس را از این تغییر مطلع کنیم. برای این کار دو ثابت جدید به فایل wp-config.php اضافه می کنیم:

define('WP_CONTENT_URL', WP_SITEURL . '/public');
define('WP_CONTENT_DIR', ABSPATH . '/public');

در این جا دو ثابت تعریف کردیم:

  1. ابتدا توسط ثابت WP_CONTENT_URL وردپرس را متوجه آن کردیم که از این پس تمامی آدرس های wp-content باید به public برای ما تغییر پیدا کنند ، در مقدار دهی آن نیز از WP_SITEURL استفاده کردیم.
  2. ثابت WP_CONTENT_DIR نیز آدرس فایل دهی سیستمی که برای PHP و اجرای عملیات آن نیاز هست هم به public تغییر پیدا کرد. دقت کنید ثابت ABSPATH در پایان فایل wp-config.php که اشاره به ریشه وردپرس دارد خودش تعریف شده است.

تغییر نام پوشه افزونه یا پلاگین (plugins) در وردپرس

به صورت پیش فرض پوشه plugins در داخل فولدر wp-content در وردپرس قرار دارد ، اما بهتر است کلا این پوشه را از داخل آن جدا کنیم و به ریشه وردپرس ببریم علت آن هم کم تر شدن آدرس دهی فایل ها می باشد که در بحث render شدن HTML و در نهایت افزایش سرعت وب سایت وردپرسی تاثیر فراوانی دارد. من طبق عادت این پوشه را در قسمت ریشه وردپرس انتقال می دهم و نام آن را addons می گذارم.
برای فهماندن این موضوع به وردپرس نیز مانند بالا وردپرس سه ثابت در اختیاز ما قرار داده است که در فایل wp-config.php قرار می دهیم:

define('WP_PLUGIN_DIR', ABSPATH . '/addons');
define('PLUGINDIR', ABSPATH . '/addons');
define('WP_PLUGIN_URL', WP_SITEURL . '/addons');

اگر دقت کرده باشین برای آدرس دهی مسیر فایل در افزونه وردپرس دو ثابت WP_PLUGIN_DIR و PLUGINDIR هست. این بخاطر تغییر در نسخه های جدید وردپرس هست یعنی وردپرس به یادگار و برای عدم تداخل در نسخه های قدیمی همچنان این ثابت دوم رو نگه داشته ما هم به قوانین آن احترام میگذاریم.

تغییر نام پوشه افزونه های جایگزین یا MU-Plugin در وردپرس

ما در مقاله انواع افزونه وردپرس به طور کامل افزونه های جایگزین را شرح دادیم و اهمیت آن را در اجرای دستورات وردپرس به شکلی که قبل از تمامی کد ها اجرا می شود را متذکر شدیم:

حتما بخوانید : انواع افزونه وردپرس و دلیل پیدایش ساختار آن ها در هسته وردپرس

فولدر mu-plugins هم در ساختار پوشه های وردپرس در درون wp-content قرار داد .من طبق عادت این پوشه را به config تغییر می دهم و آن را در ریشه ی وردپرس Cut می کنم ( فولدر wp-content بیرون می آورم ). برای افزونه های جایگزین نیز وردپرس در هسته ی خود سه ثابت به ما معرفی کرده که آن را در فایل wp-config.php قرار می دهیم:

define('WPMU_PLUGIN_URL', WP_SITEURL . '/config');
define('WPMU_PLUGIN_DIR', ABSPATH . 'config');
define('MUPLUGINDIR', 'config');

تغییر نام پوشه رسانه ها Uploads در وردپرس

تمامی فایل هایی که به عنوان رسانه اعم از تصویر یا ویدیو که در وردپرس بارگزاری (upload) می کنید ، در پوشه wp-content/uploads قرار میگیرند ، حال چقدر خوب می شد که از همه ی آدرس ها این عبارت wp-content را برداریم و خروجی HTML ما تمیز تر و سرعت بالا برود .من برای پروژه ها فولدر uploads را از ین پوشه به بخش ریشه ی وردپرس منتقل می کنم و نام آن را هم به storage تغییر می دهم. برای آگاهی وردپرس از این تغییر نیز کافی هست این ثابت را اضافه کنیم:

define('UPLOADS', 'storage');

چه بلایی سر آدرس های رسانه های قبلی می آید؟

اگر چنان چه از قبل رسانه ای را در وردپرس آپلود کرده باشید و یا از ویرایشگر های کلاسیک برای نوشتن محتوا و برگه ها استفاده کرده باشین ، مشکلی که بعد از این تغییر رخ خواهد داد این است که یک سری لینک ها در پایگاه داده ی شما با خطای 404 مواجه می شود که کاملا هم طبیعی است. برای رفع این مشکل می توانید افزونه Better Search Replace را نصب و تغییر آدرس دهید.

بعد از نصب افزونه از منوی ابزار ها وارد بخش شوید ، حال باید لینک های قبل و بعد را وارد کنید ، با توجه به ساختاری که ما برای وب سایت در مقاله چیدیم پس مقدار Search for را باید همان پیش فرض وردپرس بگذاریم:

https://realwp.net/wp-content/uploads/

و حال در قسمت Replace with نیز متد آدرس جدید را قرار می دهیم:

https://realwp.net/storage/

به همین راحتی بعد از اجرای دستور تمامی لینک ها جایگزین می شوند. اگرچه ربات های گوگل بسیار هوشمند شدن در زمنیه ی تغییر آدرس ها T ولی میتونید این کد هم در فایل functions.php قالب خودتون بزارید برای بحث ریدایرکت صحیح رسانه ها به آدرس جدید:

add_action('template_redirect', function() {

	$request_uri = $_SERVER['REQUEST_URI'];
	if (strpos($request_uri, '/wp-content/uploads/') === 0) {
		$new_url = str_replace('/wp-content/uploads/', '/storage/', $request_uri);
		wp_redirect(home_url($new_url), 301);
		exit;
	}
});

دقت کنید ویرایشگر گوتنبرگ چون با شناسه ی رسانه ها سر کار دارد ، حتی فکر این بخش هم کرده بود و با هر تغییری در فولدر هیچ مشکلی برای سایت شما ایجاد نمی شود 🙂

ایجاد پوشه جدید برای قالب های وردپرس

اگر به عنوان این بخش دقت کنید کلمه تغییر فولدر قالب را مشاهده نکردید !!! کاملا درست هست. وردپرس اجازه ی تغییر نام پوشه قالب ها که در آدرس wp-content/themes هست را توسط ثابت ها نمی دهد و این بر اساس مکانیزم هسته ی رودپرس می باشد. اما توسط توابع PHP امکان افزودن یک پوشه جدید برای مکان قالب های وردپرس کاملا امکان پذیر هست.

این کار بهتر است در Mu-Plugins ها انجام شود ، تا قبل از بارگزاری افزونه ها ، وردپرس از این امر کامل مطلع شده باشد. فرض کنید می خواهیم یک پوشه به نام template در ریشه ی وردپرس ایجاد کرده و آن معرفی کنیم. ابتدا در فولدر mu-plugins های خود یک فایل php به نام theme-dir.php ایجاد و سپس کد زیر را در آن قرار می دهیم:

register_theme_directory(ABSPATH . '/template');
add_filter('theme_root', function () {
    return ABSPATH . '/template';
});
add_filter('theme_root_uri', function () {
    return home_url('template');
}, 10, 1);

در این کد ابتدا یک پوشه جدید برای قالب ها توسط تابع register_theme_directory ایجاد کردیم سپس توسط هوک وردپرس ، مقدار آدرس دهی اصلی فولدر های قالب وردپرس را به پوشه template تغییر دادیم.

اگر تمامی تنظیمات را به درستی انجام داده باشید الان پوشه های وردپرس بدین شکل برای شما تغییر کرده اند:

ساختار بندی سریع پوشه در پروژه های وردپرس با WP-CLI

اگر در دوره جامع مدیریت وردپرس با خط فرمان یا WP-CLI که در سایت وردپرس واقعی وجود دارد شرکت کرده باشین ، ما توسط WordPress Package Management ها در همان ابتدای پروژه این ساختار را به راحتی تعریف می کنیم و نیازی به ویرایش دستی فایل wp-config.php نیست ، پیشنهاد میکنم اگر با این تکنولوژی آشنایی ندارید حتما در این دوره شرکت کنید.

مهرشاد درزی

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

انتشار
انتشار توسط
مهرشاد درزی

آخرین مطالب

اعمال قیمت فوق العاده محصولات ووکامرس به عنوان تخفیف سفارشات

همان طور که می دانید افزونه ووکامرس درنسخه های اخیر یک تغییر عمده در سفارشات…

3 هفته پیش

هماهنگ کردن محصولات ووکامرس با نرم افزار حسابداری

در زمان تهیه افزونه های وردپرس برای اتصال نرم افزار حسابداری به سیستم فروشگاهی ووکامرس…

3 هفته پیش

هوش مصنوعی در وردپرس

بالاخره در نسخه ی وردپرس 7.0 سرویس اتصال به سرویس هی خارجی مانند هوش مصنوعی…

1 ماه پیش

معرفی بهترین افزونه‌های پشتیبانی وردپرس

تا به حال شده با دل‌نگرانی در داشبورد سایت وردپرسی‌تان بنشینید، چون بخشی از سایت…

9 ماه پیش

هماهنگی محتوا و پشتیبانی سایت؛ چطور تیم فنی را با محتوا هم‌راستا کنیم؟

شاید شما هم این صحنه را دیده باشید که تیم محتوا با شوق فراوان مقاله‌ای…

9 ماه پیش

چگونه از افت رتبه سایت در گوگل جلوگیری کنیم؟

صبح زود از خواب بیدار می‌شوید، قهوه‌تان را برمی‌دارید و مثل همیشه سری به سرچ…

9 ماه پیش
برای نمایش نسخه اصلی این صفحه اینجا لمس کنید