webentwicklung-frage-antwort-db.com.de

holen Sie sich benutzerdefinierte Post-Typ-Kategorien

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

Ich dachte, dass "Typ" der Post-Typ ist. Aber nicht. Dies ist der Typ der abzurufenden Kategorie. Ich habe ohne Erfolg recherchiert.

Gibt es eine Idee, wie Sie alle Kategorien abrufen können, die allen Posts eines bestimmten Post-Typs zugewiesen sind?

2
Manolo

Eine Brute-Force-Lösung, die für alle Post-Taxonomie-Beziehungen geeignet ist:

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