Проверить, что пост из дочерней рубрики — WordPress

Проверить, что пост из дочерней рубрики — WordPress

Достаточно часто в структуре сайта на WordPress складывается такая ситуация: очень много рубрик принадлежат одной родительской рубрике. Иными словами - у рубрики много дочерних рубрик. И при разработке дополнительного функционала возникает необходимость воздействовать на посты всех дочерних рубрик этой родительской рубрики. Причем список дочерних рубрик может быть не окончательный, они могут добавляться или удаляться. Как выполнить эту проверку, если мы знаем только родительскую рубрику? Давайте разбираться...

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

post_is_in_descendant_category( $id )

Предварительно нужно добавить в ваш functions.php вот такую функцию:

function post_is_in_descendant_category( $cats, $_post = null ){
	foreach ( (array) $cats as $cat ) {
		// get_term_children() accepts integer ID only
		$descendants = get_term_children( (int) $cat, 'category');
		if( $descendants && in_category( $descendants, $_post ) )
			return true;
	}
	return false;
}

Вот и все. Всем успешных сайтов!

24.03.19
Для просмотра сайта обновите браузер.