Wie erhält man nur untergeordnete Begriffe aus einer benutzerdefinierten Taxonomie des aktuellen Beitragstyps?

Wenn Sie einen benutzerdefinierten Posttyp haben, geben Sie “pubs” mit benutzerdefinierten Taxonomie-Typen ein, in denen admin die übergeordneten Begriffe und ihre untergeordneten Begriffe eingeben. Mit diesem Code erhalten Sie alle Bedingungen des aktuellen Post-Typs:

$object_terms = wp_get_object_terms($post->ID, 'types', array('fields' => 'all')); if ($object_terms) { echo '' . '' . '' ; $res = ''; foreach ($object_terms as $term) { $res .= $term->name . ','; } echo rtrim($res,' ,').'' . ''; } 

Dieser Code zeigt sowohl die übergeordneten als auch die untergeordneten Begriffe an. Gibt es eine Möglichkeit, übergeordnete Begriffe aus dem Ergebnis auszuschließen? Ich benötige den Code, um nur die für den aktuellen Beitrag relevanten untergeordneten Begriffe anzuzeigen.

Solutions Collecting From Web of "Wie erhält man nur untergeordnete Begriffe aus einer benutzerdefinierten Taxonomie des aktuellen Beitragstyps?"

Jedes Termobjekt hat ein parent , das auf 0 gesetzt wird, wenn es sich um einen Elternstamm handelt, oder die ID des Elternobjekts, wenn es sich um einen Kindterm handelt. Wenn Sie also nur eine Ebene mit untergeordneten Begriffen haben, können Sie prüfen, ob dieses Attribut nicht gleich 0 ist. In diesem Fall hat der Begriff einen übergeordneten Namen.

 $object_terms = wp_get_object_terms( $post->ID, 'types', array( 'fields' => 'all' ) ); if ( $object_terms ) { echo '' . '' . '' ; /* This line is completely useless. */ $res = ''; foreach ( $object_terms as $term ) { /* If parent would be 0 then this 'if' would evaluate to false */ if ( $term->parent ) { $res .= $term->name . ','; /* You probably wanted ', ' here. */ } } /* This is great. In this form the 'rtrim' is useless. The two "concatenations" are null and completely useless.*/ echo rtrim($res,' ,').'' . ''; } 

Extra:

 function wt_get_child_terms( $post_id, $taxonomy = 'category', $args = array() ) { $object_terms = wp_get_object_terms( $post_id, $taxonomy, $args ); $res = ''; if ( $object_terms ) { foreach ( $object_terms as $term ) { if ( $term->parent ) { $res .= $term->name . ', '; } } } return apply_filters( 'wt_get_child_terms', rtrim( $res, ', ' ) ); } echo wt_get_child_terms( $post->ID, 'types', array( 'fields' => 'all' ) );