web-dev-qa-db-fra.com

obtenir des catégories de type de message personnalisé

De 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 
); 

Je pensais que ce type était le type de message. Mais non. C'est le type de catégorie à récupérer. J'ai recherché sans succès.

Alors, aucune idée sur la façon de récupérer toutes les catégories attribuées à toutes les publications d'un type de publication spécifique?

2
Manolo

Une solution de force brute qui convient à toute relation post-taxonomie:

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