在帖子页面中显示类别,即特定类别

时间:2019-05-03 作者:davi90ct

在我的WordPress分类部分,我有一个Food 主要类别,以及其他子类别(“汉堡、意大利面食、主食等”)。在帖子页面中,我只想显示帖子中填写的子类别。

我想显示所选的唯一子类别。如果职位在Food > hamburgerFood > main, 我只想在帖子页面上显示这两个类别,而不是所有类别。我尝试使用此代码,但它将显示所有类别:

$categories = get_categories( array(
    \'taxonomy\' => \'category\', 
    \'orderby\' => \'name\',
    \'order\' => \'ASC\',
    \'hide_empty\' => true, 
    \'include\' => \'all\',
    \'exclude\' => \'\', 
    \'exclude_tree\' => \'all\', 
    \'number\' => false,
    \'fields\' => \'all\',
    \'name\' => \'\',
    \'slug\' => \'\',
    \'hierarchical\' => true,
    \'search\' => \'\',
    \'name__like\' => \'\',
    \'description__like\' => \'\',
    \'pad_counts\' => false,
    \'get\' => \'\',
    \'child_of\' => false,
    \'childless\' => false,
    \'cache_domain\' => \'core\',
    \'update_term_meta_cache\' => true,
    \'meta_query\' => \'\',
    \'meta_key\' => array(),
    \'meta_value\'=> \'\'
));

foreach ( $categories as $category ) {
    printf( \'<a href="%1$s">%2$s</a><br />\',
        esc_url( get_category_link( $category->term_id ) ),
        esc_html( $category->name )
    );
}

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

您应该使用get_the_category() 而不是get_categories().

这个get_the_category() 函数将只返回分配给职位的类别,而get_categories() 您使用的返回所有现有类别。

编辑:

以获取分配给post的类别,但仅限于具有祖先的类别Food, 您可以使用代码:

$args = [
    \'object_ids\' => get_the_ID(),   // only categories assigned to current post
    \'child_of\' => {ID_of_food_cat}  // limit results to children (descendants) of this category
];
$cats = get_categories($args);
父类别的ID可以是硬编码的或动态的:

$food_cat_id = get_category_by_slug(\'food\');  // <-- slug of Food
$food_cat_id = ($food_cat_id instanceof WP_Term) ? $food_cat_id->term_id : 0;

相关推荐

Dropdown menu for categories

当我使用下面的代码时<?php wp_nav_menu( array(\'menu\' => \'categories\' )); ?> 我可以创建一个新的菜单来列出我创建的wordpress中的所有类别。我用它在页面中间列出所有类别。我现在的问题是:有没有一种简单的方法可以为存在的每个子类别创建下拉菜单?那么,当我点击一个特定的类别时,它的子类别会显示出来吗?