• Is there a simple way to get the parent category (if the page you’re on – so to speak – is a sub-sub-category), and then populate an array with its children’s children?

    Thanks in advance anyone ??

Viewing 6 replies - 1 through 6 (of 6 total)
  • Thread Starter steweill

    (@steweill)

    Actually I have changed things a bit. My new question – altho related – is this:

    How do you get the topmost parent category, then it’s child’s children?

    <?php $parent_cats = strip_tags( wp_list_categories('title_li&depth=1&echo=0') );?>

    will give you a list of all top level categories. You could then use cat_is_ancestor_of to determine which of these is your current sub-cat’s ancestor. Once you have the right ancestor name, get_cat_ID will provide its ID which you can then use with get_categories to obtain an array of the whole tree or with wp_list_categories to display the tree.

    <?php
    $this_category = get_category($cat);
    $parent_cats = strip_tags( wp_list_categories('title_li&depth=1&echo=0') );
    foreach( $parent_cats as $parent_cat ) {
    	$parent_id = get_cat_ID( $parent_cat );
    	if(cat_is_ancestor_of( $parent_id, $this_category->cat_ID ) {
    		echo '<pre>';
    		print_r(get_categories('&child_of='. $parent_id) );
    		echo '</pre>';
    	}
    }
    ?>
    Thread Starter steweill

    (@steweill)

    Thanks so much esmi –

    I’ve been troubleshooting around with this code you left, and I seem to have trouble getting
    strip_tags( wp_list_categories('title_li&depth=1&echo=0') );

    to return an array, I’m getting a string. How can I get it to return (or convert to) an array? Does echo=0 render it a string? can we create an array with get_terms()?

    Thanks again.

    Thread Starter steweill

    (@steweill)

    Hi again esmi,

    I’ve used explode() and it appears I’m getting an array of one: all categories are being output. They all get output again if I just echo the array iteration $parentcat[0]. Nothing comes up for $parentcat[1] and so on. If I output $parent_cats variable it doe indeed output “Array”. Do you know how I could break it down further so I can then go ahead and test it for ‘cat_is_ancestor_of’.


    if(is_category())
    {
    $this_category = get_query_var('cat');
    $parent_cats = strip_tags( wp_list_categories('title_li=&depth=1&echo=0') );

    $parent_cats = explode(",", $parent_cats);

    foreach ($parent_cats as $parentcat) {
    echo "$parentcat";

    }

    }

    I’m not a php coder so some basic stuff eludes me – sorry.

    Sorry – I missed a step. Amended code:

    <?php
    $this_category = get_category($cat);
    $parents = strip_tags( wp_list_categories('title_li&depth=1&echo=0') );
    $parent_cats = explode("\n\n",$parents);
    foreach( $parent_cats as $parent_cat ) {
    	$parent_id = get_cat_ID( trim($parent_cat) );
    	if(cat_is_ancestor_of( $parent_id, $this_category->cat_ID ) ) {
    		echo '<pre>';
    		print_r(get_categories('&child_of='. $parent_id) );
    		echo '</pre>';
    	}
    }
    ?>
    PaulWarren

    (@paulwarren)

    This is so close to what I am looking for… how would I amend this code to get the topmost category’s child categories rather then it’s child’s child’s categories?

Viewing 6 replies - 1 through 6 (of 6 total)
  • The topic ‘3-level nav: need to drill back up – help?’ is closed to new replies.