Скрыть сообщения, имеющие дочерние условия при показе сообщений по категориям в edit.php

У меня есть настраиваемый тип сообщений, называемый "ttc_infobit" который относится к пользовательской таксономии "ttc_catalogue" . Эта таксономия является иерархической.

Когда я фильтрую сообщения в edit.php этой таксономией, я хочу показывать только сообщения, имеющие edit.php выбранный термин, а не его дочерние edit.php .

Например, если мой URL-адрес:

/wp-admin/edit.php?s&post_status=all&post_type=ttc_infobit&action=-1&m=0&lang=el&admin_page_template&ttc_catalogue=77&paged=1&mode=list&action2=-1

WordPress отображает сообщения с ttc_catalogue с id 77, а также показывает сообщения с ttc_catalogue с идентификаторами 101 и 102, которые являются ttc_catalogue 77.

Как фильтровать edit.php для отображения только элементов с id = 77?

Solutions Collecting From Web of "Скрыть сообщения, имеющие дочерние условия при показе сообщений по категориям в edit.php"

По умолчанию, когда вы выполняете запрос для иерархического термина таксономии, WordPress также возвращает сообщение от своих детей. Это происходит и на бэкэнд и на фронте.

'tax_query' имеет аргумент 'include_children' который был введен для области действия, из Codex:

include_children (boolean) Включать или не включать детей для иерархических таксономий. Значение по умолчанию равно true.

Таким образом, вы должны запустить налоговый запрос, чтобы установить этот параметр в false, однако невозможно запустить налоговый запрос с URL 'pre_get_posts' , но вы можете действовать на 'pre_get_posts' и устанавливать его.

Для получения дополнительной информации см. Встроенные комментарии:

 add_action('pre_get_posts', function( $query ) { if ( // being sure the query is the right one ! is_admin() || ! $query->is_main_query() || ! ( $term = $query->get('ttc_catalogue') ) ) return; // being sure the page is the right one $s = get_current_screen(); if ( $s->id !== 'edit-ttc_infobit' ) return; // prepare tax query $tax_query = array( 'taxonomy' => 'ttc_catalogue', 'terms' => array( $term ), 'field' => is_numeric( $term ) ? 'id' : 'slug', 'include_children' => FALSE ); // set tax query $query->set( 'tax_query', array( $tax_query ) ); // unset 'plain' ttc_catalogue argument $query->set( 'ttc_catalogue', '' ); });