Как получить дочерние категории для данного сообщения
Как мне получить имена дочерних категорий произвольной публикации?
Например, у меня есть категория slug - "мотоциклы", и у меня есть подкатегории для нее. Поэтому мне нужно получить название каждой подкатегории сообщений, которая находится внутри категории с мотоциклами slug. Y2ok
2 answers
Чтобы получить дочерние категории данной родительской категории, используйте комбинацию get_category_by_slug()
и get_categories()
.
Последняя функция вернет массив объектов категории, соответствующий указанному массиву аргументов запроса; первая вернет идентификатор категории с учетом ее слага.
Так, например:
<?php
$motorbike_child_cat_args = array(
'child_of' => get_category_by_slug( 'motorbikes' )
);
$motorbike_child_cats = get_categories( $motorbike_child_cat_args );
?>
Затем вы можете делать все, что захотите, со своим массивом объектов категорий. Например, чтобы получить массив дочерних категорий имена:
<?php
$motorbike_child_cat_names = array();
foreach ( $motorbike_child_cats as $child_cat ) {
$motorbike_child_cat_names[] = $child_cat->name;
}
?>
На самом деле, что вы будете с этим делать, зависит от вас в этот момент.
РЕДАКТИРОВАТЬ
Если вам нужно получить дочерние категории произвольного сообщения , то вы можете использовать get_the_category()
.
Если вы внутри Цикла, просто вызовите get_the_category()
; если вы вне Цикла, то вам нужно передать идентификатор сообщения вызову: get_the_category( $id )
.
Так, например, для построения массива имен дочерних категорий (независимо от родителя) текущей должности:
<?php
$my_post_categories = get_the_category();
$my_post_child_cats = array();
foreach ( $my_post_categories as $post_cat ) {
if ( 0 != $post_cat->category_parent ) {
$my_post_child_cats[] = $post_cat->cat_name;
}
}
?>
Или, например, для построения массива имен дочерних категорий "мотоцикл" текущей должности:
<?php
$my_post_categories = get_the_category();
$motorbikes_child_cats = array();
foreach ( $my_post_categories as $post_cat ) {
if ( 'motorbikes' == $post_cat->category_parent ) {
$motorbikes_child_cats[] = $post_cat->cat_name;
}
}
?>
Это больше то, что ты ищешь?
РЕДАКТИРОВАТЬ 2
Если вам просто нужно получить все категории вашего сообщения:
<?php
$all_post_categories = get_the_category();
$my_post_cats = array();
foreach ( $my_post_categories as $post_cat ) {
$my_post_cats[] = $post_cat->cat_name;
}
?>
Это даст вам все категории для текущей должности. Я понятия не имею, как motorbikes
категория факторов, влияющих на этот вопрос.
$categories = wp_get_post_categories( get_the_ID(), array('fields' => 'ids') );
$arguments = array(
'taxonomy' => 'category',
'childless' => true,
'include' => $categories,
);
$selected_category = get_terms( $arguments );