WordPress.org

Support

Support » How-To and Troubleshooting » If is 3rd Level of Category

If is 3rd Level of Category

  • equalmark

    @equalmark

    I have the following category structure for a site that I am working on:

    2008
    – Group 1
    — Review 1
    — Review 2
    – Group 2
    — Review 1
    — Review 2
    2009
    – Group 1
    — Review 1
    — Review 2
    – Group 2
    — Review 1
    — Review 2

    I want to display the category listing page for all the categories called “review” in a different way. Therefore how to do I check for whether the category is a 3rd level category i.e. it has a parent and grandparent?

Viewing 7 replies - 1 through 7 (of 7 total)
  • equalmark

    @equalmark

    Getting round this another way I have managed to fix this however I am now using the code below in order to display the category names of child categories of the current category.

    <?php $descendants = get_categories(array('child_of' => 6)); ?>
    
     <?php foreach ($descendants as $child) { ?>
    
         <li><?php echo $child->cat_name; ?></li>
    
    <?php } ?>

    My questions is, is how do I alter this so that it only brings back the immediate child categories of the current category, rather than child and grandchild categories?

    MichaelH

    @michaelh

    More to your first question:

    <?php
    $test_for_level = intval(3);
    $last_level = 0;
    $cat_to_test = 6;
    $category=get_category($cat_to_test);
    for ( $counter = 1; $counter <= $test_for_level; $counter += 1) {
      if ($category->category_parent) {
        $category=get_category($category->category_parent);
        $last_level = $counter;
      }
    }
    $last_level +=1;
    if ($last_level == $test_for_level) {
      echo '<p>Category ' . $cat_to_test . ' is at level ' .$last_level . '</p>';
    } else {
      echo '<p>Category ' . $cat_to_test . ' is NOT at level ' .$test_for_level . '</p>';
    }
    ?>
    idowens

    @idowens

    Add depth=x, where x is the number of levels you wish to show.

    equalmark

    @equalmark

    Thanks for that MichaelH – works a treat.

    Regarding my second question. The depth function doesn’t seem to work. It is not a parameter of the function according to this page?

    http://codex.wordpress.org/Function_Reference/get_categories

    Anyone have any ideas?

    MichaelH

    @michaelh

    That depth= seems to only work with wp_list_categories and wp_dropdow_categories and both pass that argument to walk_category_tree.

    equalmark

    @equalmark

    At the moment when I click on category 2008 / 2009 it show the immediate children (Group 1, Group 2) but also the grand children (Review 1, Review 2). It is OK when on the Group 1 or Group 2 cat pages. How do I stop it returning Grand Children?

    idowens

    @idowens

    Michael is right, the depth var only works with the two he listed…my apologies.

    I’m not sure how to limit depth with the wp_get param.

Viewing 7 replies - 1 through 7 (of 7 total)
  • The topic ‘If is 3rd Level of Category’ is closed to new replies.
Skip to toolbar