サポート » 使い方全般 » カテゴリ(タクソノミ)リンクリストの親だけリンク無しでdivタグで出力

  • 解決済 san3san

    (@sansanko)


    <li><a href="">親1</a>
         <ul>
              <li><a href="">子1A</a></li>
              <li><a href="">子1B</a></li>
         </ul>
    </li>
    <li><a href="">親2</a>
         <ul>
              <li><a href="">子2A</a></li>
              <li><a href="">子2B</a></li>
         </ul>
    </li>

    wp_list_categories() と使うと、通常上記のように出力されるカテゴリーのメニューリストですが、
    部分的に出力形式が変わった状態にしたいのです。
    下記のように親カテゴリはリンクをさせず、かつ、親子のブロックを
    divタグで出力するにはどうすればいいでしょう?

    <div><h1>親1</h1>
         <ul>
              <li><a href="">子1A</a></li>
              <li><a href="">子1B</a></li>
         </ul>
    </div>
    <div><h1>親2</h1>
         <ul>
              <li><a href="">子2A</a></li>
              <li><a href="">子2B</a></li>
         </ul>
    </div>

    完全に煮詰まってしまって困り果てました。
    よろしくお願いします。

2件の返信を表示中 - 16 - 17件目 (全17件中)
  • 下記のように指定していて、なぜか’show_count’だけが効きません。他は効いています。

    functions.php

    class MyWalker extends Walker_Category {
    
    	function start_el(&$output, $category, $depth, $args) {
    		extract($args);
    
    		$cat_name = esc_attr( $category->name );
    
    		$link = '<a href="%1$s" rel="%2$s">%3$s</a>';
    
    		$link = sprintf($link
    							, esc_attr( get_term_link($category) )
    							, $category->slug
    							, $cat_name
    							);
    		if ( !empty($show_count) ){
    			$link .= ' (' . intval($category->count) . ')';
    		}
    		if($category->category_parent > 0 ){
    
    			$output .= '<li class="'.$class.'">'.$link;
    		}
    		if($category->category_parent == 0){
    			$output .= '<div><h1>'.$cat_name.'</h1>';
    		}	
    
    	}
    
    	function end_el( &$output, $page, $depth = 0, $args = array() ) {
    		if ( 'list' != $args['style'] )
    			return;
    
    		if($depth > 0){
    			$output .= "</li>\n";
    		}else{
    			$output .= "</div>\n";
    
    		}
    	}
    
    }

    template

    $MyWalker = new MyWalker();
    $args = array('walker' => $MyWalker,'echo' => 0,'show_count' => 1);
    $result = str_replace(array( '<li class="categories">カテゴリー<ul>'),'',wp_list_categories($args));
    echo rtrim( $result,'</ul></li>');

    nobitaさん
    何度もありがとうございます。

    開閉式(アコーディオン式)メニューのプラグインが既にあったのですね。
    もっと真剣に探すべきだと反省しました。
    質問させていただく時の心がけとして最初から全ての詳しい情報を
    出したほうがよいというのも学習しました。

    プラグインは試していませんが、
    教えていただいたコードで完璧にやりたいことが実現しました。
    カテゴリ名の部分をカウント数も含めて置換してしまっているので
    カウントがある場合には新たにカウント数を表示するよう
    指定し直さなくてはいけなかったのですね。
    納得しました。

    これで解決とさせていただきます。
    本当にありがとうございました。

2件の返信を表示中 - 16 - 17件目 (全17件中)
  • トピック「カテゴリ(タクソノミ)リンクリストの親だけリンク無しでdivタグで出力」には新たに返信することはできません。