daveaspinall
  • 0
Новичок

Получить_the_category и вывести ссылку на самую дочернюю/самую глубокую категорию

  • 0

У меня есть этот код, который находится на странице search.php и извлекает все категории для каждого сообщения и выводит ссылку на первую категорию:

$category = get_the_category(); //print_r($category);
if ($category) {
  echo '<a href="' . get_category_link( $category[0]->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category[0]->name ) . '" ' . '>' . $category[0]->name.'</a> ';

Что мне нужно сделать, так это использовать аналогичный код, но он получает самую дочернюю/самую глубокую категорию в массиве?

Это распечатанный массив:

[0] => stdClass Object
    (
        [term_id] => 170
        [name] => ACS Series Suspended &amp; Crane Scales - EC Approved
        [slug] => uwe-acs-series-suspended-crane-scales
        [term_group] => 0
        [term_taxonomy_id] => 170
        [taxonomy] => category
        [description] => 
        [parent] => 3
        [count] => 4
        [object_id] => 1578
        [cat_ID] => 170
        [category_count] => 4
        [category_description] => 
        [cat_name] => ACS Series Suspended &amp; Crane Scales - EC Approved
        [category_nicename] => uwe-acs-series-suspended-crane-scales
        [category_parent] => 3
    )

[1] => stdClass Object
    (
        [term_id] => 3
        [name] => Crane Scales
        [slug] => crane-scales
        [term_group] => 0
        [term_taxonomy_id] => 3
        [taxonomy] => category
        [description] => 
        [parent] => 0
        [count] => 53
        [object_id] => 1578
        [cat_ID] => 3
        [category_count] => 53
        [category_description] => 
        [cat_name] => Crane Scales
        [category_nicename] => crane-scales
        [category_parent] => 0
    )

Как видите, у одной категории parent->3, а у другой — parent->0. Как мне использовать приведенный выше запрос, чтобы распечатать ссылку только для категории с parent-> 3?

Это, вероятно, довольно просто, но это немного выше моей головы. Любая помощь будет принята с благодарностью!

Спасибо

Дэйв

Share
  1. Если вы хотите показать то же самое для одного сообщения в 2020 году, вы можете проверить мой ответ здесь: wordpress.stackexchange.com/questions/10510/…

    • 0
  2. Может ли get_category_parents() быть полезным? Он выводит список всех иерархических родителей данной категории.

    • 0
  3. получил результат при переполнении стека, который сработал благодаря @poelinca. код ниже, если у кого-то еще есть такая же проблема:

    Добавьте эту функцию в файл theme/functions.php:

    function get_deep_child_category( $categories )
    {
        $maxId = 0;
        $maxKey = 0;
        foreach ( $categories as $key => $value )
        {
            if ( $value->parent > $maxId )
            {
                $maxId = $value->term_id;
                $maxKey = $key;
            }
        }
        return $categories[$maxKey];
    }
    

    Затем скажем, как в вашем примере в теме/search.php, вы делаете

    $categories = get_the_category();
    if ( $categories ) :
        $deepChild = get_deep_child_category( $categories );
        ?>
            <a href="<?php echo get_category_link( $deepChild->term_id ); ?>" title="<?php echo sprintf( __( "View all posts in %s" ), $deepChild->name ); ?>"><?php echo $deepChild->name; ?></a>
        <?php 
    endif;
    

    Насколько я знаю, нет другого способа сортировки категорий через get_the_category(), но я могу ошибаться, и приведенный выше код не будет лучшим способом сделать что-то, если это так.

    @chip bennett, спасибо за ваш вклад, я пробовал это, но изо всех сил пытался заставить его работать так, как мне нужно (удаление разделителей).

    Спасибо,

    Дэйв

    • 0

Оставить ответ

You must login to add an answer.