Get Category or Page Depth or level

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); ?>

Leave a Reply

%d bloggers like this: