Запрещаем вывод записей из дочерних терминов таксономии (категорий)

Запрещаем вывод записей из дочерних терминов таксономии (категорий)

 

В WordPress есть возможность создавать так называемые таксономии, которые помогают классифицировать посты по определенным признакам. Ярким примером являются “категории” или “метки”, которые можно выбирать при создании новой записи. Благодаря им мы разделяем  посты на категории типа “Блог”, “Статьи” и так далее. В данном случае “Категорию” принято называть таксономией, а созданные категории уже называются терминами. Также термины могут иметь определенную иерархию, то есть иметь вложенные подкатегории.

Например если создать категорию “Новости”, а в ней создать подкатегорию “В мире”, то поместив записи в категорию “В мире” мы увидим их также в родительской категории “Статьи”.  Это не проблема, для меня по крайней мере, но иногда бывает необходимость исключить эти записи из родительских рубрик.

Кусок php кода приведенный ниже избавит Вас от проблемы когда в родительском термине таксономии выводятся записи из дочерних терминов. Желательно вставить этот код в function.php активной темы сайта. Единственное, что вам нужно будет заменить, это переменная $taxonomy, которая должна содержать вашу таксономию.

/**
 * Запрещаем вывод записей из дочерних терминов таксономии
 *
 * @param $query
 */
function exclude_category( $query ) {
	$taxonomy = 'catalog';
	if ( ! get_query_var( $taxonomy ) || ! $query->is_main_query() || ! $query->is_tax ) {
		return;
	}

	$query->set( 'tax_query', array(
		'relation' => 'AND',
		array(
			'taxonomy'         => $taxonomy,
			'field'            => 'slug',
			'terms'            => array( get_query_var( $taxonomy ) ),
			'include_children' => false
		)
	) );
}

add_action( 'pre_get_posts', 'exclude_category', 30, 1 );

Поделиться:
Подписаться
Уведомление о
0 Ваш комментарий
Inline Feedbacks
Смотреть все комментарии