関数 get_terms
を試されましたか?
関数の戻り値はタームオブジェクトの配列です。引数に hierarchical=0
を含めると親分類(親ターム)を除外できます。
gblsmさん、ありがとうございます。
get_termsについて調べて色々検索して
http://webcake.no003.info/webdesign/get-terms.html
さんにコードが書いてあったのでコピーしてみました。
hierarchical=0等、一部はご指摘の通りに追加しました。
<?php
// カスタム分類名
$taxonomy = 'foodlist';
// パラメータ
$args = array(
'orderby' => 'count',
'order' => 'desc',
'pad_counts' => 1,
'hierarchical' => 0,
'hide_empty' => 1
);
// カスタム分類のタームのリストを取得
$terms = get_terms( $taxonomy , $args );
if ( count( $terms ) != 0 ) {
echo '<ul>';
// タームのリスト $terms を $term に格納してループ
foreach ( $terms as $term ) {
// タームのURLを取得
$term = sanitize_term( $term, $taxonomy );
$term_link = get_term_link( $term, $taxonomy );
if ( is_wp_error( $term_link ) ) {
continue;
}
// 子タームの場合はCSSクラス付与
if( $term->parent != 0 ) {
echo '<li class="children">';
} else {
echo '<li>';
}
// タームのURLと名称を出力
echo '<a href="' . esc_url( $term_link ) . '">' . $term->name . '</a>(' . $term->count . ')';
echo '</li>';
}
echo '</ul>';
}
?>
このままページに記述したのですがどうしても親要素も表示されてしまいます。
根本が理解できていない無知な質問ですみません
こちらこそ遠回りさせてしまってすみません。下記の点を見落としていました。
投稿時には野菜類・根菜系・ゴボウとチェックをして投稿しています。
投稿に親の分類(親ターム)も付けてある、というのを見落としていて、どの投稿にも末端のタームだけが付いている(野菜類や根菜系が付いた投稿は無い)状態で試したところ、hierarchical=0
の指定でうまく行きました。(hierarchical=0
を指定すれば、pad_counts=1
と hide_empty=1
は不要でした。)
つまり、親の分類が付けられた投稿は hierarchical=0
を指定しても除外されなかった訳です。get_terms() の説明を読んで大丈夫だろうと思ったのですが。役に立たなくて申し訳ありません。
akichan1さんの御希望と違ってしまいますが別の方法を考えてみました。上記のように、ゴボウ(末端のターム)を付けた投稿には親分類(親ターム)を付けない、というように分類の付け方を変えるのはどうでしょうか。別の問題が出てしまうかもしれませんが。
力技ですが下記の引数で実現できました。お試しください。
$args = array(
'orderby' => 'count',
'order' => 'desc',
'hierarchical' => 0,
'exclude' => get_terms( $taxonomy , 'fields=id=>parent' )
);
gblsmさん
ご説明ありがとうございます、実は書いて頂いたコードの前後に何かしら不備があったらしく
ペーストしても一向に表示が出来ませんでした。
何度か試したところ、思い通りの表示が出来ました。
本当にありがとうございました。