function btp_entry_capture_categories() {
$out = '';
global $post;
$taxonomies = get_object_taxonomies( $post );
foreach ( $taxonomies as $taxonomy ) {
$taxonomy = get_taxonomy( $taxonomy );
if ( $taxonomy->query_var && $taxonomy->hierarchical ) {
$out .= '<div class="entry-categories">';
$out .= '<h6>' . $taxonomy->labels->name . '</h6>';
$out .= get_the_term_list( $post->ID, $taxonomy->name, '<ul><li>', '</li><li>', ' › </li></ul>' );
$out .= '</div>';
}
}
return $out;
}
カテゴリリストを階層順に出力しようとしていますが、自分のコードでも可能ですか。そのための最善の方法は何でしょうか。
get_the_term_list()
はここでは動作しません。使用するのに最適な関数は wp_get_post_terms()
です。
次の仮定では、これはうまくいく可能性があります。
投稿が1人の親、1人の子供および/または1人の孫にのみ属する場合は、term_id
で条件を並べることができます。
親は子供よりも小さい番号のIDを持ち、子供は孫よりも小さい番号のIDを持つことが広く受け入れられています。
この情報で、あなたはあなたのコードの中でそれから続くようにポスト用語を得ることができます
wp_get_post_terms( $post->ID, $taxonomy->name, array( 'orderby' => 'term_id' ) );
しかし、私が言ったように、あなたはあなたの投稿に同じ木の中に1人の親、1人の子供と1人の孫だけがいる必要があるでしょう
_編集_
あなたはこのようなことを試すことができます。 HTMLマークアップを自分で追加するだけです。
function btp_entry_capture_categories() {
$out = '';
global $post;
$taxonomies = get_object_taxonomies( $post );
foreach ( $taxonomies as $taxonomy ) {
$taxonomy = get_taxonomy( $taxonomy );
if ( $taxonomy->query_var && $taxonomy->hierarchical ) {
$out .= '<div class="entry-categories">';
$out .= '<h6>' . $taxonomy->labels->name . '</h6>';
$terms = wp_get_post_terms( $post->ID, $taxonomy->name, array( 'orderby' => 'term_id' ) );
foreach ( $terms as $term ) {
$out .= $term->name;
}
$out .= '</div>';
}
}
return $out;
}