• 解決済 rongexp

    (@rongexp)


    お世話になります。

    親、子、孫とカテゴリーの階層がわかれていています。
    <?php wp_list_categories(); ?>を使用すると、
    すべてにリンクがある状態で表示されてしまいます。
    できれば
    子、孫が無い場合には親にリンクを
    親、子の階層の場合は子にリンクを
    親、子、孫の階層の場合には孫のみにリンクを付けたいのです。
    下記のような感じにしたいのです。

    親カテゴリーA
    ┃ ┗子カテゴリーA1(リンクなし)
    ┃ ┗子カテゴリーA1-1(リンク有)
    ┃ ┗子カテゴリーA1-2(リンク有)
    ┃ ┗子カテゴリーA2(リンク有)
    ┃ ┗子カテゴリーA3(リンク有)
    ┃
    ┣親カテゴリーB
    ┃ ┗子カテゴリーB1(リンク有)
    ┃ ┗子カテゴリーB3(リンクなし)
    ┃ ┗子カテゴリーB3-1(リンク有)
    ┃ ┗子カテゴリーB3-2(リンク有)
    ┃
    ┣親カテゴリーC(リンク有)

    以前フォーラムで書かれていた
    下記のの内容が一番近いのですが
    これでやると孫がある場合
    子と孫の両方にリンクが張られてしまいます。

    http://ja.forums.wordpress.org/topic/12181?replies=22

    どなたかお分かりになる方、なにとぞご教示ください。
    よろしくお願いします。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • 失敗です。

    class 等は適当に付けてください。

    ★sidebar.php 等

    <h3>カテゴリー</h3>
    <?php
    $categories = get_categories('hierarchical=0&parent=0');
    if ($categories) my_list_categories($categories);
    ?>

    ★functions.php

    function my_list_categories($categories) {
        echo '<ul>'.PHP_EOL;
        foreach($categories as $category) {
            $children = get_categories('hierarchical=0&parent='.$category->cat_ID);
            if ($children) {
                echo '<li>'.esc_html($category->cat_name).PHP_EOL;
                my_list_categories($children);
                echo '</li>'.PHP_EOL;
            } else {
                $url = esc_url(get_category_link($category->cat_ID));
                $cat_name = esc_html($category->cat_name);
                echo '<li><a href="'.$url.'">'.$cat_name.'</a></li>'.PHP_EOL;
            }
        }
        echo '</ul>'.PHP_EOL;
    }

    トピック投稿者 rongexp

    (@rongexp)

    pluto1234さん

    こんな方法もあったのですね。
    まだまだ勉強不足のようです、助かりました。
    これを参考にしながら
    階層の作り方をもう一度考え直します。
    ありがとうございました!

3件の返信を表示中 - 1 - 3件目 (全3件中)

トピック「カテゴリーで、表示はそのまま、リンクだけを外したい」には新たに返信することはできません。