Скрыть дочерние термины на родительских терминах

Я создал пользовательскую должность «компания» и пользовательскую категорию «категория компании». У меня есть вопрос здесь, я хочу скрыть родительскую категорию в основной категории.

Например:

  • Первичная категория "Первая"
    • Подкатегория "Вторая"

Я создал две записи «Fname» и «Sname». «Fname» присваивается первой категории, а «Sname» назначается второй категории. Я не хочу показывать «Sname» в первой категории, но только «Fname» будет отображаться в первой категории.

Это возможно?

Я нашел плагин-решения, только одна категория , но все они используются для обычного типа сообщений, а не для персонализированного типа сообщений.

Я пытаюсь изменить код следующим образом:

$q_args = array( 'paged' => $glocal_search_pageds, 'post_type' => array('company'), 's' => $s, 'company_category' => $company_category, 'posts_per_page' => $companyprp, 'orderby' => $orderby, 'order' => $order, 'tax_query' => array( array( 'include_children' => false ) ) ); 

Solutions Collecting From Web of "Скрыть дочерние термины на родительских терминах"

Я думаю, что лучшим решением является захват pre_get_posts действия pre_get_posts . Во-первых, проверяется, находимся ли мы в архиве вашей пользовательской таксономии, а затем установите include_children на false для аргумента tax_query запроса.

 add_action( 'pre_get_posts', 'cyb_pre_get_posts' ); function cyb_pre_get_posts( $query ) { //Assuming the slug of the custom taxonomy is company-category //chage it with the correct value if needed if( $query->is_tax( 'company-category' ) && $query->is_main_query() && !is_admin() ) { $tax_query = array( array( 'taxonomy' => 'company-category', 'terms' => $query->get( 'company-category' ), 'include_children' => false ); $query->set( 'tax_query', $tax_query ); } } 

Другой подход, который кажется лучше (взятый из этого ответа и адаптированный для пользовательской таксономии вместо таксономии основной категории):

 add_filter( 'parse_tax_query', 'cyb_do_not_include_children_in_company_category_archive' ); function cyb_do_not_include_children_in_company_category_archive( $query ) { if ( ! is_admin() && $query->is_main_query() && $query->is_tax( 'company-category' ) ) { $query->tax_query->queries[0]['include_children'] = 0; } } 

Для пользовательских запросов и вторичных циклов:

  $args = array( //Rest of you args go here 'taxt_query' => array( array( 'include_children' => false ) ) ); $query = new WP_Query( $args );