WP仅显示包含该帖子类型的帖子的类别

时间:2016-11-01 22:53:27

标签: php wordpress

在wordpress中,我创建了2种自定义帖子类型Services& Work可以使用wp默认类别和标记分类法。

在任何给定的单个帖子页面上,我需要列出该帖子类型的可用类别。

我试过用过  $args = array( 'hide_empty' => 1, 'taxonomy' => 'category' ); wp_list_categories( $args ); 仅列出与帖子相关联的那些类别,但列表不考虑帖子类型。

我如何仅列出该帖子类型使用的类别?

1 个答案:

答案 0 :(得分:2)

回答问题here

  

将以下内容放入functions.php

function wp_list_categories_for_post_type($post_type, $args = '') {
    $exclude = array();

    // Check ALL categories for posts of given post type
    foreach (get_categories() as $category) {
        $posts = get_posts(array('post_type' => $post_type, 'category' => $category->cat_ID));

        // If no posts found, ...
        if (empty($posts))
            // ...add category to exclude list
            $exclude[] = $category->cat_ID;
    }

    // Set up args
    if (! empty($exclude)) {
        $args .= ('' === $args) ? '' : '&';
        $args .= 'exclude='.implode(',', $exclude);
    }

    // List categories
    wp_list_categories($args);
}
     

现在您可以致电wp_list_categories_for_post_type('photos');或   wp_list_categories_for_post_type('videos', 'order=DESC&title_li=Cats');等。