@runprogr

Как выдернуть из массива объект, в котором есть определенный параметр?

В wp функция get_the_category(); возвращает такой массив
array(4) { 
[0]=> object(WP_Term)#5339 (16) { ["term_id"]=> int(5) ["name"]=> string(22) "Легендарный" ["slug"]=> string(9) "legendary" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(5) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(1) ["count"]=> int(2) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(5) ["category_count"]=> int(2) ["category_description"]=> string(0) "" ["cat_name"]=> string(22) "Легендарный" ["category_nicename"]=> string(9) "legendary" ["category_parent"]=> int(1) } 
[1]=> object(WP_Term)#5338 (16) { ["term_id"]=> int(17) ["name"]=> string(21) "Орды нежити" ["slug"]=> string(12) "undeadhordes" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(17) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(2) ["count"]=> int(1) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(17) ["category_count"]=> int(1) ["category_description"]=> string(0) "" ["cat_name"]=> string(21) "Орды нежити" ["category_nicename"]=> string(12) "undeadhordes" ["category_parent"]=> int(2) } 
[2]=> object(WP_Term)#5333 (16) { ["term_id"]=> int(24) ["name"]=> string(18) "Поддержка" ["slug"]=> string(7) "support" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(24) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(20) ["count"]=> int(1) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(24) ["category_count"]=> int(1) ["category_description"]=> string(0) "" ["cat_name"]=> string(18) "Поддержка" ["category_nicename"]=> string(7) "support" ["category_parent"]=> int(20) }
[3]=> object(WP_Term)#5332 (16) { ["term_id"]=> int(26) ["name"]=> string(8) "Сила" ["slug"]=> string(5) "force" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(26) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(25) ["count"]=> int(2) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(26) ["category_count"]=> int(2) ["category_description"]=> string(0) "" ["cat_name"]=> string(8) "Сила" ["category_nicename"]=> string(5) "force" ["category_parent"]=> int(25) } }

Родительские категории для всех постов одни, а вот дочерние категории могут быть разные. Надо вытащить дочернюю категорию, не зная ее ID, но зная ID родительской.

Пытаюсь вытащить нужный объект из массива таким кодом
$cat_data = get_the_category( array( 'parent' => 2 ) );

Но не срабатывает, параметр просто игнорируется и выдает несколько объектов, даже те, которые имеют 'parent' => 1, например. Явно что-то делаю неправильно, подскажите что именно.
  • Вопрос задан
  • 41 просмотр
Решения вопроса 1
@runprogr Автор вопроса
Решение все таки найдено. Фух, это было сложно. Правильно делать так :

$id_parent = 'Нужный ID'; 
$cat_data = array_filter(
	get_the_category(),
	function ($e) use($id_parent) {
	        return $e->parent == $id_parent;
	}
);

Это выдает нам нужный объект из массива по параметру.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы