如何在Wordpress中获得一系列自定义类别?

时间:2018-10-17 13:41:15

标签: arrays wordpress categories custom-taxonomy

我已经将自定义分类法注册为自定义帖子类型的一部分,但是当将其传递给get_categories()时,它将返回一个空数组。有什么想法吗?

// Register FAQ Categories taxonomy
function bv_faq_register_categories() {
    register_taxonomy(
        'faq-category',
        'faq',
        array(
            'label'        => 'Categories',
            'rewrite'      => array('slug' => 'faq-category'),
            'hierarchical' => true
        )
    );
}
add_action('init', 'bv_faq_register_categories');

// Category view
$categories = get_categories(array(
    'taxonomy' => 'faq-category'
));

$categories返回一个空数组。

3 个答案:

答案 0 :(得分:1)

您改用了get_terms吗?

$categories = get_terms( 'faq-category', array(
    'orderby'    => 'count',
    'hide_empty' => 0
) );

答案 1 :(得分:0)

您的代码看起来还不错。您是否已将此类别分配给任何帖子/帖子类型? 如果没有,您将得到一个空结果。为了进行测试,您可以像这样设置'hide_empty' = false

// Category view
$categories = get_categories(array(
    'taxonomy' => 'faq-category',
    'hide_empty' => false // set it true
));

此外,您可以使用get_terms()函数。

答案 2 :(得分:0)

就像@AD Styles所说的那样,我将使用自定义分类法的get_terms来扩展一些示例代码:

<?php

$post_type = 'faq-category';

// Get all the taxonomies for this post type
$taxonomies = get_object_taxonomies( (object) array( 'post_type' => $post_type ) );

foreach( $taxonomies as $taxonomy ) : 

    // Gets every "category" (term) in this taxonomy to get the respective posts
    $terms = get_terms( array( 
    'taxonomy' => $taxonomy,
    'parent'   => 0
    ) );

    foreach( $terms as $term ) :

        echo "<h1>".$term->name."</h1>";

    endforeach;

endforeach;

?>