ساخت قالب اختصاصی برای خطای 403 و 401 در وردپرس
- مقالات آموزشی
- بروزرسانی شده در
چند روز پیش که یکی از کاربران عزیز هممیهن سوالی مبنی بر ساخت قالب اختصاصی برای خطای 403 و 401 ارسال کرده بودند به این نتیجه رسیدم که برای ساخت صفحه 403 و 401 در وردپرس راهی نیست. مگر اینکه از روشهای دیگری برای ساخت این صفحات اختصاصی استفاده کنیم.
همانطور که در دوره ۰ تا ۱۰۰ طراحی سایت با وردپرس یاد گرفتیم، برای ساخت قالب اختصاصی خطای ۴۰۴ در وردپرس، میتوانیم یک فایل 404.php در قالب سایتمان ایجاد کنیم. سپس هر کدی که میخواهیم را در این فایل بنویسیم و در نهایت به عنوان مثال چنین قالبی برای خطای 404 ایجاد کنیم:
اما برای خطای ۴۰۳ این روش جوابگو نیست. چراکه خطای ۴۰۳ از سمت سرور فراخوانی میشود و قالب این صفحه هم از سمت سرور نمایش داده میشود. به این شکل:
در هر صورت همیشه راهی برای انجام کارها در وردپرس است. چرا که وردپرس قابلیت درج هر نوع کد PHP را دارد. پس ببینیم چطور میتوان صفحات سفارشی 403 و 401 را در وردپرس ایجاد کرد.
آنچه در این مقاله میخوانید
ساخت چایلدتم برای قالب
در ابتدا اگر برای قالب سایت خود چایلدتم ایجاد نکردهاید، همین حالا شروع به ساخت چایلدتم کنید. اگر نمیدانید چایلدتم چیست، مقاله ما درباره چایلدتم را بخوانید. به این جهت چایلدتم را ایجاد میکنیم که اگر از قالب آماده وردپرس مثل قالب اهورا استفاده میکنید، طبیعتا این قالبها آپدیت میشوند و با آپدیت قالب تغییرات شما روی قالب حذف خواهد شد.
ساخت قالب اختصاصی برای خطای 403
حالا وارد پوشه قالب یا پوشه چایلدتم قالب میشویم. سپس فایلی با نام زیر ایجاد میکنیم.
403.php
این فایل محدرات صفحه خطای ۴۰۳ را ذخیره خواهد کرد. مثلا در این فایل میتوانیم بنویسیم: خوش آمدی اما به اینجا دسترسی نداری!
البته راه بهتری هم است. اینکه فایل 404 را کپی کرده و با نام 403 ذخیره کنیم.
همین کار را برای خطای 401 هم انجام میدهیم، یعنی فایلی با نام زیر در پوشه قالب ایجاد میکنیم و کدهای دلخواه خود را آنجا مینویسیم.
401.php
ویرایش فایل functions.php
حالا به مرحله اصلی رسیدیم. کافیست وارد فایل functions.php قالب سایتتان شوید. سپس این کدها را در این فایل اضافه کنید. کدها باید در انتهای فایل فانشکن قبل از ?> اضافه شوند.
function mihanwp_custom_error_pages()
{
global $wp_query;
if(isset($_REQUEST['status']) && $_REQUEST['status'] == 403)
{
$wp_query->is_404 = FALSE;
$wp_query->is_page = TRUE;
$wp_query->is_singular = TRUE;
$wp_query->is_single = FALSE;
$wp_query->is_home = FALSE;
$wp_query->is_archive = FALSE;
$wp_query->is_category = FALSE;
add_filter('wp_title','mihanwp_custom_error_title',65000,2);
add_filter('body_class','mihanwp_custom_error_class');
status_header(403);
get_template_part('403');
exit;
}
if(isset($_REQUEST['status']) && $_REQUEST['status'] == 401)
{
$wp_query->is_404 = FALSE;
$wp_query->is_page = TRUE;
$wp_query->is_singular = TRUE;
$wp_query->is_single = FALSE;
$wp_query->is_home = FALSE;
$wp_query->is_archive = FALSE;
$wp_query->is_category = FALSE;
add_filter('wp_title','mihanwp_custom_error_title',65000,2);
add_filter('body_class','mihanwp_custom_error_class');
status_header(401);
get_template_part('401');
exit;
}
}
function mihanwp_custom_error_title($title='',$sep='')
{
if(isset($_REQUEST['status']) && $_REQUEST['status'] == 403)
return "Forbidden ".$sep." ".get_bloginfo('name');
if(isset($_REQUEST['status']) && $_REQUEST['status'] == 401)
return "Unauthorized ".$sep." ".get_bloginfo('name');
}
function mihanwp_custom_error_class($classes)
{
if(isset($_REQUEST['status']) && $_REQUEST['status'] == 403)
{
$classes[]="error403";
return $classes;
}
if(isset($_REQUEST['status']) && $_REQUEST['status'] == 401)
{
$classes[]="error401";
return $classes;
}
}
add_action('wp','mihanwp_custom_error_pages');
به همین راحتی! حالا کافیست یکی از صفحات سایت خود که با خطای ۴۰۳ مواجه است را مشاهده کنید.
خطا به شکل کدهایی که در فایل 403 ذخیره کردهاید نمایش داده خواهد شد.
موفق باشید.
سلام
با چه افزونه ای تیتر های مطالبتونو سمت چپ سایدبار نشون می دید؟
سلام
از افزونه table of contents استفاده کنید
خیلی ممنونم. پشتیبانیتون عالیه
سپاس از شما کاربر گرامی
ممنون، و این که چطور میتونم stickyش کنم؟
ممنون از پاسخگوییتون
توی گوگل سرچ کنید sidebar sticky js افزونهها و کدهای جاوا اسکریپت زیادی هست.