サポート » テーマ » トップページに分類の名前を表示したい

  • 解決済 akichan1

    (@akichan1)


    お世話になります。

    カスタム投稿にて「メニュー」
    カスタム分類にて「食材」を作っています。
    食材と言う分類には
    一番最初に野菜類(他肉類など)
    →→下に青系・赤系・根菜系などがあり
    →→→その下にほうれん草・人参・大根などがあります
    があり、投稿時には野菜類・根菜系・ゴボウとチェックをして投稿しています。

    トップページのサイドバーに使われている食材ランキングを表示したいのですが
    表示したいのは最後の分類、上の例で言う「ゴボウ」です。

    親分類の名前や例)ゴボウ(件数)の(件数)は不要で投稿の多い順で10件ほど並べたいのです。

    出来ればリストタグやCSSで整形出来る形で表示したいです

    何卒よろしくお願いいたします

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • 関数 get_terms を試されましたか?
    関数の戻り値はタームオブジェクトの配列です。引数に hierarchical=0 を含めると親分類(親ターム)を除外できます。

    トピック投稿者 akichan1

    (@akichan1)

    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=1hide_empty=1 は不要でした。)

    つまり、親の分類が付けられた投稿は hierarchical=0 を指定しても除外されなかった訳です。get_terms() の説明を読んで大丈夫だろうと思ったのですが。役に立たなくて申し訳ありません。

    akichan1さんの御希望と違ってしまいますが別の方法を考えてみました。上記のように、ゴボウ(末端のターム)を付けた投稿には親分類(親ターム)を付けない、というように分類の付け方を変えるのはどうでしょうか。別の問題が出てしまうかもしれませんが。

    力技ですが下記の引数で実現できました。お試しください。

    $args = array(
    'orderby'       => 'count',
    'order'         => 'desc',
    'hierarchical'  => 0,
    'exclude' => get_terms( $taxonomy , 'fields=id=>parent' )
    );

    トピック投稿者 akichan1

    (@akichan1)

    gblsmさん

    ご説明ありがとうございます、実は書いて頂いたコードの前後に何かしら不備があったらしく
    ペーストしても一向に表示が出来ませんでした。

    何度か試したところ、思い通りの表示が出来ました。

    本当にありがとうございました。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「トップページに分類の名前を表示したい」には新たに返信することはできません。