web-dev-qa-db-ja.com

カスタム投稿タイプのカテゴリを取得する

Http://codex.wordpress.comから:

$categories = get_categories( $args );

$args = array(
'type'                     => 'post',
'child_of'                 => 0,
'parent'                   => '',
'orderby'                  => 'name',
'order'                    => 'ASC',
'hide_empty'               => 1,
'hierarchical'             => 1,
'exclude'                  => '',
'include'                  => '',
'number'                   => '',
'taxonomy'                 => 'category',
'pad_counts'               => false 
); 

私は 'type'がポストタイプだと思いました。だがしかし。これは取得するカテゴリの種類です。私は成功せずに研究した。

それでは、特定の投稿タイプのすべての投稿に割り当てられているすべてのカテゴリを取得する方法についてのアイデアはありますか?

2
Manolo

分類後の関係に有効な総当たりソリューション。

global $wpdb;

// set the target relationship here
$post_type = 'post';
$taxonomy = 'category';

$terms_ids = $wpdb->get_col( $wpdb->prepare( "
    SELECT
        tt.term_id
    FROM
        {$wpdb->term_relationships} tr,
        {$wpdb->term_taxonomy} tt,
        {$wpdb->posts} p
    WHERE 1=1
        AND tr.object_id = p.id
        AND p.post_type = '%s'
        AND p.post_status = 'publish'
        AND tr.term_taxonomy_id = tt.term_taxonomy_id
        AND tt.taxonomy ='%s'
    ", $post_type, $taxonomy ) );

// here you are
$terms = get_terms( $taxonomy, array(
    'include' => $terms_ids,
    'orderby' => 'name',
    'order' => 'ASC'
) );
2
vmassuchetto