وردپرس: عدم نمایش نوشتههای دستهبندی هنگام وجود زیردسته
اگر از دستهبندیهای(Category) وردپرس برای نمایش محصولات یا انواع دیگر محتواها استفاده میکنید و میخواهید هنگامی که یک دستهبندی دارای دستهبندیهای زیرمجموعه(Sub-Category) است، پستها یا محصولات در این صفحه نمایش داده نشود، استفاده از قطعه کد زیر میتواند شما را به هدف برساند.
فرض کنید محصولات مورد نظر شما در دستهبندیهای تو در تو به شکل زیر طبقهبندی شدهاند:
گروه اصلی => گروه فرعی ۱، گروه فرعی ۲
و محصولات شما در گروه فرعی ۱ و گروه فرعی ۲ قرار دارند.
در حالت معمول هنگامی که کاربران صفحهی «گروه اصلی» را باز کنند، میتوانند تمام محصولات سایت را مشاهده کنند که شاید مورد انتظار شما نباشد.
کدهای لازم برای مخفی کردن پستها
درج کدهای زیر داخل functions.php قالب وردپرس باعث میشود تا پستها یا محصولات فقط در آخرین شاخه از درخت دستهبندیها نمایش داده شوند و در شاخههای بالاتر نتایج خالی مشاهده شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
add_action( 'pre_get_posts', 'roka_hide_posts_if_category_has_child' ); function roka_hide_posts_if_category_has_child( $query ) { if ( ! is_admin() && $query->is_main_query() && is_category() ) { $term = get_queried_object(); $children = get_terms( $term->taxonomy, array( 'parent' => $term->term_id, 'hide_empty' => false ) ); if( $children ) { $query->set( 'page_id', -1 ); } } } |
توجه کنید که این کدها فقط از نمایش محصولات در دستهبندی جلوگیری میکند و به طور معمول لازم است تا قالب صفحهی دستهبندی را نیز به شکلی تغییر دهید که اگر یک دستهبندی دارای زیرمجموعه است، این زیرمجموعهها نمایش داده شود وگرنه هنگامی که این صفحات باز شوند، هیچ چیزی قابل مشاهده نخواهد بود.