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

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

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

1راه حل

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

2سلسله مراتب قالب وردپرس

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

سلسله مراتب وردپرس

تصویر تا حدود زیادی گویای نحوه اولویت بندی فایل های مختلف می باشد اما به عنوان مثال برای دسته بندی ها وردپرس ابتدا فایل category.php را فراخوانی می کند و اگر چنین فایلی یافت نشد، فایل archive.php فراخوانی می شود و در صورتی که این فایل هم یافت نشد، فایل index.php فراخوانی خواهد شد.

اما مطابق شکل برای دسته بندی ها دو فایل دیگر اولویت بیشتری نسبت به فایل category.php دارند. فایل های category-$slug.php و category-$id.php . آیا این جواب مشکل ما نیست؟! دقیقا.

فرض کنیم دسته بندی هایی که می خواهیم قالب متفاوتی داشته باشند، دسته بندی اخبار(با نامک news و آی.دی 20) و دسته بندی تصاویر(با نامک images و آی.دی 25) هستند. برای فراخوانی قالب متفاوت برای دسته بندی های اشاره شده، کافیست دو فایل با این نام داخل فولدر قالب اضافه کنیم و تغییرات لازم را در آنها ایجاد کنیم:

و یا با استفاده از آی.دی ها:

3استفاده از یک فیلتر

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

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

با اجرای فیلتر بالا تابعی که تعریف شده است فراخوانی می شود. روند کار تابع بدین صورت است که ابتدا دسته بندی مربوط به اخبار را از تنظیمات قالب دریافت می کند. سپس برای این دسته بندی فایل category-news.php داخل قالب با فایل پیشفرض وردپرس جایگزین می شود.

امیدواریم این آموزش برای شما مفید بوده باشد.

سوال یا دیدگاه شما