Как определить является ли категория WordPress дочерней

Как определить является ли категория WordPress дочерней

На самом деле определить это достаточно просто. К примеру, если мы находимся на странице архивов / archive постов (где срабатывают хуки is_archive, is_tag, пр.). Мы можем прибегнуть к следующему способу:

add_action('wp', function()
{
	$Term = get_queried_object();
	if(is_a($Term, 'WP_Term'))
	{
		if($Term -> parent > 0)
		{
			echo 'Категория, тег или термин является дочерним';
		}
	}
});

Функция “get_queried_object()”, содержит в себе динамические данные, т.е. данные которые зависят от той странице, на которой мы находимся на текущий момент. Если это страница поста, то ф-я вернет объект “WP_Post”, с данными поста. Если это страница архива (категории, термина, или тега), то ф-я get_queried_object() будет содержать объект “WP_Term”. В некоторых случаях функция содержит объект post_type.

Вернемся к коду выше. По свойству термина “parent”, мы можем определить, за каким другим термином закреплен текущий. Если “parent” равен нулю, значит текущий термин находится в корне. Если “parent” больше нуля, следовательно он вложен в какой-то другой термин, и является по отношению к нему дочерним.
Выше мы рассмотрели случай, когда находимся на странице категории, пр. А что если нам нужно определить родителя произвольного темрина? скажем по ID или slug/слагу темрина?

Для этих целей мы можем воспользоваться ф-ией get_term_by().

Это полезная ф-я, используя которую мы можем определить данные любого термина по его id/slug/name/term_taxonomy_id. К примеру, получим данные термина по его ID:

$Term = get_term_by(‘id’, 123, ‘category’);

как вы уже догадались, третьим параметром идет название таксономии к которой принадлежит термин.

Аналогичным образом получим данные термина по слагу:

$Term = get_term_by(‘slug’, ‘test-term’, ‘category’);

После того как мы получили данные термина, мы делаем проверку на тип объекта и родителя:

if(is_a($Term, 'WP_Term'))
{
	if($Term -> parent > 0)
	{
		echo 'Категория, тег или термин является дочерним';
	}
}

вот и все :))

Поделиться в соцсетях:

С вашим WordPress сайтом проблемы? нужен дополнительный функционал? нестандартный плагин или сверстать новую страницу?
Тогда напишите мне через форму обратной связи, и я постараюсь вам помочь.

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *