Support » Themes and Templates » Sub-menu based on categories please

  • Resolved petethebloke

    (@petethebloke)


    I received an answer about sub-menus based on Pages. Now I am trying to figure it out for Categories.

    This doesn’t work (it’s in sidebar.php)….

    <ul>
      <?php wp_list_categories('show_count=0&title_li=&depth=1'); ?>
    </ul>
    <?php //above here is fine ?>
    <div id="subnav">
    <ul>
    <?php
      $this_categ=0;
      foreach((get_the_category()) as $category) {
      /*this is the bit that's wrong - get_the_category() gets
        all the categories because it's not in the loop - I need
        something to get one category based on where we are at
        the moment*/
        $this_categ=$category->cat_ID;
      }
      if($this_categ){
        $output = wp_list_categories ('echo=0&child_of=' . $this_categ. '&title_li=');
      }
      echo $output;
    ?>
    </ul>
Viewing 4 replies - 1 through 4 (of 4 total)
  • You’ll probably want to do something like this:

    <ul>
      <?php wp_list_categories('show_count=0&title_li=&depth=1'); ?>
    </ul>
    <?php //above here is fine ?>
    <div id="subnav">
    <ul>
    <?php
      global $post;
      $this_categ=0;
      foreach((get_the_category($post->ID)) as $category) {
        $this_categ=$category->cat_ID;
      }
      if($this_categ){
        $output = wp_list_categories ('echo=0&child_of=' . $this_categ. '&title_li=');
      }
      echo $output;
    ?>
    </ul>

    That’s untested, but passing the post ID as a parameter allows get_the_category() to work outside the post.

    Thanks. That should be good provided the posts belong to one category, I should be able to work with that.

    Here’s a refined version that checks if you’re in the loop…

    <ul>
    	<?php wp_list_categories('show_count=0&title_li=&depth=1'); ?>
    </ul>
    <div id="subnav">
    	<ul>
    	<?php if(!in_the_loop()) global $post; ?>
    	<?php $catNow = get_cat_ID(single_cat_title($post->ID,'',false)); $output = ''; ?>
    	<?php if($catNow && $catNow !== 0) $output .= wp_list_categories ('echo=0&child_of='.$catNow.'&title_li='); ?>
    	<?php echo $output; ?>
    	</ul>
    </div>

    Although i’m not sure i fully understand your usage…

    Thanks for that. I’m trying to get a horizontal nav and subnav based on categories and subcats. I’ve got sidebar.php displaying horizontally. It’s pretty well all working. There may be some odd results when posts are in multiple categories – that’s yet to be seen.

    Thanks again,

    Pete

Viewing 4 replies - 1 through 4 (of 4 total)
  • The topic ‘Sub-menu based on categories please’ is closed to new replies.