get_category_parents für benutzerdefinierte Taxonomie vom Post-Typ

Ich weiß, dass wir die übergeordnete Kategorie in normalen Posttyp erhalten können, indem Sie:

get_category_parents($cat, TRUE, ' » '); 

Aber wie können wir die übergeordnete Kategorie in benutzerdefinierten Post-Typ bekommen?

Ich benutze das für:

 if ( is_category() || is_single() && !is_singular( 'portfolio' ) ) { // Full path links $category = get_the_category(); $ID = $category[0]->cat_ID; echo '
  • '.get_category_parents( $ID, TRUE, '', FALSE ).'
  • '; } elseif ( is_singular( 'portfolio' ) ) { $category = get_the_terms( $post->ID, 'portfolio-category' ); $ID = $category[0]->cat_ID; echo '
  • '.get_category_parents( $ID, TRUE, '', FALSE ).'
  • '; }

    Solutions Collecting From Web of "get_category_parents für benutzerdefinierte Taxonomie vom Post-Typ"

    Aktualisierte Antwort:

    Es gibt jetzt eine corefunktion seit WordPress 4.8, um die Vorfahren eines bestimmten Begriffs aufzulisten:

     get_term_parents_list( int $term_id, string $taxonomy, string|array $args = array() ) 

    und get_category_parents() ist ein Wrapper für diese function mit $taxonomy als 'category' .

    Vorherige Antwort:

    Hier ist eine modifizierte Version, die ich aus der function get_category_parents() , um allgemeine Taxonomien zu unterstützen.

     /** * Retrieve category parents with separator for general taxonomies. * Modified version of get_category_parents() * * @param int $id Category ID. * @param string $taxonomy Optional, default is 'category'. * @param bool $link Optional, default is false. Whether to format with link. * @param string $separator Optional, default is '/'. How to separate categories. * @param bool $nicename Optional, default is false. Whether to use nice name for display. * @param array $visited Optional. Already linked to categories to prevent duplicates. * @return string */ function wpse85202_get_taxonomy_parents( $id, $taxonomy = 'category', $link = false, $separator = '/', $nicename = false, $visited = array() ) { $chain = ''; $parent = get_term( $id, $taxonomy ); if ( is_wp_error( $parent ) ) return $parent; if ( $nicename ) $name = $parent->slug; else $name = $parent->name; if ( $parent->parent && ( $parent->parent != $parent->term_id ) && !in_array( $parent->parent, $visited ) ) { $visited[] = $parent->parent; $chain .= wpse85202_get_taxonomy_parents( $parent->parent, $taxonomy, $link, $separator, $nicename, $visited ); } if ( $link ) $chain .= 'name ) ) . '">'.$name.'' . $separator; else $chain .= $name.$separator; return $chain; } 

    Sie können die function wie folgt verwenden:

     echo wpse85202_get_taxonomy_parents($cat, $tax, TRUE, ' » '); 

    oder wie

     echo wpse85202_get_taxonomy_parents(65, 'country', TRUE, ' » ');