بطور کلی هسته ی وردپرس (WordPress) شامل سه پوشه زیر هست:
تعریف دقیق هسته ی وردپرس یعنی فایل ها و پوشه های وردپرس که ما تحت هیچ شرایطی اجازه تغییر در آن ها را نداریم که شامل پوشه های wp-admin و wp-includes به همراه تمامی فایل های 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 ابتدا از بخش File Manager هاست خود آن را به نام دلخواه (انگلیسی) تغییر دهید ، من همیشه در برنامه نویسی وردپرس و پروژه ها آن را به نام public تغییر می دهم . حال میبایست وردپرس را از این تغییر مطلع کنیم. برای این کار دو ثابت جدید به فایل wp-config.php اضافه می کنیم:
define('WP_CONTENT_URL', WP_SITEURL . '/public');
define('WP_CONTENT_DIR', ABSPATH . '/public');
در این جا دو ثابت تعریف کردیم:
به صورت پیش فرض پوشه 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-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');
تمامی فایل هایی که به عنوان رسانه اعم از تصویر یا ویدیو که در وردپرس بارگزاری (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 که در سایت وردپرس واقعی وجود دارد شرکت کرده باشین ، ما توسط WordPress Package Management ها در همان ابتدای پروژه این ساختار را به راحتی تعریف می کنیم و نیازی به ویرایش دستی فایل wp-config.php نیست ، پیشنهاد میکنم اگر با این تکنولوژی آشنایی ندارید حتما در این دوره شرکت کنید.
همان طور که می دانید افزونه ووکامرس درنسخه های اخیر یک تغییر عمده در سفارشات…
در زمان تهیه افزونه های وردپرس برای اتصال نرم افزار حسابداری به سیستم فروشگاهی ووکامرس…
بالاخره در نسخه ی وردپرس 7.0 سرویس اتصال به سرویس هی خارجی مانند هوش مصنوعی…
تا به حال شده با دلنگرانی در داشبورد سایت وردپرسیتان بنشینید، چون بخشی از سایت…
شاید شما هم این صحنه را دیده باشید که تیم محتوا با شوق فراوان مقالهای…
صبح زود از خواب بیدار میشوید، قهوهتان را برمیدارید و مثل همیشه سری به سرچ…