get_depth()
As far as I know there is no function in WordPress that return the page or category depth.
I created a function that returns the depth of a page or category. The depth is how many levels from the root the page or category in its hierarchy. The root level number is 0.
<? php function get_depth($id = '', $depth = '', $i = 0) { global $wpdb; if($depth == '') { if(is_page()) { if($id == '') { global $post; $id = $post->ID; } $depth = $wpdb->get_var("SELECT post_parent FROM $wpdb->posts WHERE ID = '".$id."'"); return get_depth($id, $depth, $i); } elseif(is_category()) { if($id == '') { global $cat; $id = $cat; } $depth = $wpdb->get_var("SELECT parent FROM $wpdb->term_taxonomy WHERE term_id = '".$id."'"); return get_depth($id, $depth, $i); } elseif(is_single()) { if($id == '') { $category = get_the_category(); $id = $category[0]->cat_ID; } $depth = $wpdb->get_var("SELECT parent FROM $wpdb->term_taxonomy WHERE term_id = '".$id."'"); return get_depth($id, $depth, $i); } } elseif($depth == '0') { return $i; } elseif(is_single() || is_category()) { $depth = $wpdb->get_var("SELECT parent FROM $wpdb->term_taxonomy WHERE term_id = '".$depth."'"); $i++; return get_depth($id, $depth, $i); } elseif(is_page()) { $depth = $wpdb->get_var("SELECT post_parent FROM $wpdb->posts WHERE ID = '".$depth."'"); $i++; return get_depth($id, $depth, $i); } } ? > Use of this function:<?php echo get_depth(); ?> <?php echo get_depth(2); ?> <?php echo get_depth($cat); ?> <?php echo get_depth($page_id); ?>