wake-up-neo.com

Übergeordnete Kategorien mit benutzerdefiniertem Beitragstyp abrufen

Ich versuche, alle Kategorien anzuzeigen, die zu dem benutzerdefinierten Beitragstyp gehören, in dem sich der Benutzer befindet.

Zum Beispiel dieser Beitrag: http://bit.ly/1ANisxN Ist ein benutzerdefinierter Beitragstyp, der zu dieser Seitenkategorie gehört: http://bit.ly/1FYscKh

Wie Sie sehen können, zeigt die Seitenkategorie, dass es sich um untergeordnete Kategorien handelt. Genau das möchte ich mit dem benutzerdefinierten Post erreichen: i.imgur.com/vk4K31T.png

Dies sind die Dinge, die ich in dem benutzerdefinierten Beitrag versucht habe, um die übergeordneten Kategorien ohne Glück anzuzeigen:

<?php echo get_category_parents() ?>

Übrigens gibt die Kategorieseite auf diese Weise ihre Unterkategorien wieder:

<?php  
$terms = get_terms( 'btp_work_category' ); 
   foreach ( $terms as $term ) {
       ?>
       <li><a href="#" data-filter=".filter-<?php echo $term->term_id; ?>"><?php echo $term->name; ?></a></li>
       <?php  
  }
?>      

Irgendeine Idee, wie das geht?

Zum Beispiel diese Kategoriestruktur:

Elektronik (Spitzenkategorie)

  • Kameras (Unterkategorie)

    • beiträge
  • TV (Unterkategorie)

    • beiträge
  • Handys (Unterkategorie)

    • beiträge

Wenn ich mich in einem cameras-Beitrag befinde, möchte ich die oberste Kategorie und ihre Unterkategorien anzeigen (die relativ zu cameras sind, da alle unter "Elektronik" aufgeführt sind).

1
wp richard

Wenn Sie sich in der einzelnen benutzerdefinierten Beitragsvorlage befinden, können Sie die Begriffe, zu denen der Beitrag gehört, mithilfe von abrufen

$terms = get_the_terms( get_the_ID(), 'btp_work_category' );

Dann müssen Sie den übergeordneten Begriff bestimmen und ihn mit seinen untergeordneten Elementen anzeigen.

Im folgenden Code wird davon ausgegangen, dass der Beitrag zu einer der obersten Kategorien (Begriff) gehört und der Taxonomiebaum nicht mehr als zwei Ebenen aufweist.

$terms = get_the_terms( get_the_ID(), 'btp_work_category' );
if ( ! empty( $terms ) ) :
  echo "<ul>\n";
  // Parent term detection and display
  $term = array_pop( $terms );
  $parent_term = ( $term->parent ? get_term( $term->parent, 'btp_work_category' ) : $term );
  echo "<li>\n";
  echo '<a href="' . get_term_link( $parent_term, 'btp_work_category' ) . '">' . $parent_term->name . '</a>';
  // Getting children
  $child_terms = get_term_children( $parent_term->term_id, 'btp_work_category' );
  if ( ! empty( $child_terms ) ) :
    echo "\n<ul>\n";
    foreach ( $child_terms as $child_term_id ) :
      $child_term = get_term_by( 'id', $child_term_id, 'btp_work_category' );
      echo '<li><a href="' . get_term_link( $child_term, 'btp_work_category' ) . '">' . $child_term->name . "</a></li>\n";
    endforeach;
    echo "</ul>\n";
  endif; // ( ! empty( $child_terms ) )
  echo "</li>\n";
  echo "</ul>\n";
endif; // ( ! empty( $terms ) )
1

Hier ist etwas, das irgendwie funktionieren sollte ... trotz der Tatsache, dass CPTs keine übergeordnete Kategorie haben, wie es normale WP Posts tun.

function get_cpt_parent_cat_aka_taxonomy() {
    global $post;
    $parent_tax_name = 'Undefined parent taxonomy!';
    $obj_taxonomies = get_object_taxonomies( $post->post_type, 'objects' );
    $slugs = array();
    if( !empty( $obj_taxonomies ) ) {
        foreach ( $obj_taxonomies as $key => $tax ) {
            if( $tax->show_ui === true && $tax->public === true && $tax->hierarchical !== false ) {
                array_Push( $slugs, $tax->name );
            }
        }
        $terms = wp_get_post_terms( $post->ID, $slugs );
        $term = get_term( $terms[ 0 ]->term_id, $terms[ 0 ]->taxonomy );
        $parent_tax_name = $term->name;
    }
    return $parent_tax_name;
}
0
Dameer