Как получить дочерние категории для данного сообщения


Как мне получить имена дочерних категорий произвольной публикации?

Например, у меня есть категория slug - "мотоциклы", и у меня есть подкатегории для нее. Поэтому мне нужно получить название каждой подкатегории сообщений, которая находится внутри категории с мотоциклами slug. Y2ok

Author: Chip Bennett, 2011-10-20

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 категория факторов, влияющих на этот вопрос.

 9
Author: Chip Bennett, 2011-10-20 19:59:54
$categories = wp_get_post_categories( get_the_ID(), array('fields' => 'ids') );

$arguments = array(
    'taxonomy'    => 'category',
    'childless'   => true,
    'include'     => $categories,
);

$selected_category = get_terms( $arguments );
 0
Author: Sathiyamoorthy, 2016-07-28 18:40:36