Get_the_Category和Echo Out链接至子最深/最深类别

时间:2011-03-29 作者:daveaspinall

我在搜索中找到了这个代码。php页面并检索每篇文章的所有类别,echo将链接到第一个类别:

$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
    )
如您所见,一个类别的父级->3,另一个类别的父级->0。如何使用上述查询仅打印父级为->3的类别的链接?

这可能很简单,但有点让我不知所措。任何帮助都将不胜感激!

谢谢

戴夫

2 个回复
最合适的回答,由SO网友:daveaspinall 整理而成

由于@poelinca,堆栈溢出问题得到了解决。代码如下,以防其他任何人有相同的问题:

在您的主题/功能中添加此功能。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];
}
那么让我们假设您在主题/搜索中的示例。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\\u the\\u category()对类别进行排序,但我可能弄错了,如果是这样的话,上面的代码就不是最好的方法。

@chip bennett,谢谢你的输入,我确实尝试过这个,但很难按照我的需要工作(拆下分离器)。

谢谢

戴夫

SO网友:Chip Bennett

可以get_category_parents() 有帮助吗?它输出给定类别的所有层次父级的列表。

结束