داستان چیه؟
چند روز پیش که داشتیم سایت یکی از مشتریان رو تکمیل میکردیم با مشکل وقتگیری مواجه شدیم. این سایت در حوزه آرایشی بهداشتی بود و تعداد زیادی دسته و زیر دسته داشت (بیشتر از ۳۰۰ تا دستهبندی). این دستهبندیها رو قرار بود در منوی سایت قرار بدیم.
وقتی وارد بخش فهرستها شدیم دیدیم که وردپرس این دستهبندیها رو مثل شکل زیر صفحهبندی کرده و در هر صفحه ۵۰ تا آیتم رو بیشتر نشون نمیده و تقریباً دسته اصلی و زیر دسته هم مشخص نیست.
این مشکل کارمون رو خیلی سخت میکرد، چون قرار بود دستهبندیها رو بهصورت مرتب در منو بچینیم. اگر میخواستیم به همین منوال پیش بریم باید دونه دونه دستهبندیهای مورد نظرمون رو در صفحات مختلف پیدا و به منو اضافه میکردیم که زمان زیادی رو میگرفت. باید یه فکر اساسی میکردیم!
حذف صفحهبندی
راهکارهای مختلفی رو بررسی کردیم و در نهایت به این موضوع رسیدیم که میشه صفحهبندی دستههای محصولات رو غیر فعال کرد. حالا دو راه وجود داشت. یکی اینکه در هسته وردپرس تغییراتی اعمال کنیم یا اینکه بیایم کدی بنویسیم که مقادیر پیشفرض وردپرس رو تغییر بده.
روش اول: تغییر در هسته وردپرس
راه اول این بود که بیایم در فایلهای اصلی وردپرس تغییراتی اعمال کنیم که مثلاً بجای ۵۰ تا آیتم بیاد ۵۰۰ تا ایتم نشون بده در هر صفحه. اینکار بهصورت موقت خوبه. یعنی اگر اول کار میخواید کلی دستهبندی به منو اضافه کنید و بعدش دیگه با این بخش کاری ندارید بهتره این روش رو پیاده کنید. فقط بدونید این روش موقتی هست و اگر وردپرس رو آپدیت کنید این تغییر از بین میره. برای اعمال این تغییر به مسیر زیر برید:
wp-admin\includes\nav-menu.php
کد زیر رو در خط ۳۴۷ و ۷۰۱ پیدا کتید و بجای عدد ۵۰ یک عدد بزرگتر مثلاً ۵۰۰ رو جایگزین کنید. اینطوری هر ۵۰۰ آیتم رو یک صفحه میکنه.
$per_page = 50;
روش دوم: تغییر در فایل فانکشن
روش دوم هم اینه که بیایم مثل همیشه در فایل فانکشن تغییراتی اعمال کنیم و یک کدی بنویسیم تا مقادیر پیشفرض وردپرس رو تغییر بده. این راهحل دائمی هست و با بروزرسانی وردپرس تغییرات شما از بین نمیره. برای این کار کافیه تکه کد زیر رو به فایل فانکشن اضافه کنید و بجای عدد ۵۰ یک عدد بزرگتر مثلاً ۵۰۰ رو قرار بدید.
add_filter( 'get_terms_args', 'show_all_categories_admin_nav_menu', 10, 2);
function show_all_categories_admin_nav_menu( $args, $taxonomies ) {
if( reset($taxonomies) === 'category' ) {
$args['number'] = '50';
}
return $args;
}
دقت داشته باشید که علیالظاهر صفحهبندی سرجاش هست ولی وقتی روی تب “نمایش همه” میرید در همون صفحه ۱ همه آیتمها رو براتون میاره. اگر روی صفحه دوم به بعد کلیک کنید دوباره ۵۰ تایی میشه و باید صفحه رو یکبار رفرش کنید. در این خصوص حتماً ویدئوی بالای صفحه رو ببینید.
همونطور که میبینید صفحهبندی به نظر میرسه سرجاش باشه ولی عملاً همه آیتمها رو به طور کامل نشون میده. حتی دسته اصلی و زیردسته رو هم براتون مشخص کرده. حالا براحتی میتونید همه دستهبندیهای مورد نظرتون رو انتخاب و به منو اضافه کنید.