Now, this might not seem like something worth reporting, but I have now perfected my breadcrumb code which I use on this blog. Now, most of it is simple but the thing I managed to do today was to include recursive sub-page listing in the breadcrumb. Since Wordpress doesn’t supply an is_subpage() function I had to use the code available on the codex (it’s there somewhere) and since you can’t select the parent of a parent easily I had to do some magic with $wp_query. Eventually it all worked out though.
<p id="navbar"><?php
if(is_page('7') and $wp_query->get('page')) :
echo "<a href=\"".get_bloginfo('url')."\">" . get_bloginfo('name') . "</a> » <a href=\"".get_bloginfo('url')."/archives/\">Archives</a> » " . $wp_query->get('page');
elseif(is_page()) :
if(get_the_title($post->post_parent) != the_title(' ' , ' ',false)) :
echo "<a href=\"".get_bloginfo('url')."/\">" . get_bloginfo('name') . "</a>";
$oldquery = $wp_query->get('pagename');
while(get_the_title($post->post_parent) != the_title(' ' , ' ',false)) :
$crumbs[] = " » <a href=\"".get_permalink($post->post_parent)."\">" . get_the_title($post->post_parent) . "</a>";
$wp_query->query('page_id='.$post->post_parent);
$wp_query->get_posts();
endwhile;
echo implode('', array_reverse($crumbs));
$wp_query->query('pagename='.$oldquery);
$wp_query->get_posts();
echo " » " .wp_title('', false);
else :
echo "<a href=\"".get_bloginfo('url')."/\">" . get_bloginfo('name') . "</a> » " . wp_title('', false);
endif;
elseif(is_month()) :
echo "<a href=\"".get_bloginfo('url')."/\">" . get_bloginfo('name') . "</a> » <a href=\"".get_bloginfo('url')."/archives/\">Archives</a> » <a href=\"" . get_year_link($wp_query->get('year')) . "\">" . $wp_query->get('year') . "</a> » " . date("F",mktime(0,0,0,$wp_query->get('monthnum')));
elseif(is_day()) :
echo "<a href=\"".get_bloginfo('url')."/\">" . get_bloginfo('name') . "</a> » <a href=\"".get_bloginfo('url')."/archives/\">Archives</a> » <a href=\"" . get_year_link($wp_query->get('year')) . "\">" . $wp_query->get('year') . "</a> » ";
echo "<a href=\"" . get_month_link($wp_query->get('year'), $wp_query->get('monthnum')) . "\">" . date("F",mktime(0,0,0,$wp_query->get('monthnum'))) . "</a> » " . date("l jS",mktime(0,0,0,$wp_query->get('monthnum'),$wp_query->get('day'),$wp_query->get('year')));
elseif(is_year()) :
echo "<a href=\"".get_bloginfo('url')."/\">" . get_bloginfo('name') . "</a> » <a href=\"".get_bloginfo('url')."/archives/\">Archives</a> » " . $wp_query->get('year');
elseif(is_404()) :
echo "<a href=\"".get_bloginfo('url')."/\">" . get_bloginfo('name') . "</a> » File not found";
elseif(is_category()) :
echo "<a href=\"".get_bloginfo('url')."/\">" . get_bloginfo('name') . "</a> » <a href=\"".get_bloginfo('url')."/categories/\">Categories</a> » " . get_catname($wp_query->get('cat'));
elseif(is_single()) :
if($wp_query->get('page')) :
echo "<a href=\"".get_bloginfo('url')."/\">" . get_bloginfo('name') . "</a> » <a href=\"".get_bloginfo('url')."/archives/\">Archives</a> » <a href=\"" . get_year_link($wp_query->get('year')) . "\">" . $wp_query->get('year') . "</a> » ";
echo "<a href=\"" . get_month_link($wp_query->get('year'), $wp_query->get('monthnum')) . "\">" . date("F",mktime(0,0,0,$wp_query->get('monthnum'))) . "</a> » <a href=\"" . get_day_link($wp_query->get('year'), $wp_query->get('monthnum'), $wp_query->get('day')) . "\">";
echo date("l jS",mktime(0,0,0,$wp_query->get('monthnum'),$wp_query->get('day'),$wp_query->get('year'))) . "</a> » <a href=\"" . get_permalink($wp_query->get('id')) . "\">" . wp_title('', false) . "</a> » Page" . $wp_query->get('page');
else :
echo "<a href=\"".get_bloginfo('url')."/\">" . get_bloginfo('name') . "</a> » <a href=\"".get_bloginfo('url')."/archives/\">Archives</a> » <a href=\"" . get_year_link($wp_query->get('year')) . "\">" . $wp_query->get('year') . "</a> » ";
echo "<a href=\"" . get_month_link($wp_query->get('year'), $wp_query->get('monthnum')) . "\">" . date("F",mktime(0,0,0,$wp_query->get('monthnum'))) . "</a> » <a href=\"" . get_day_link($wp_query->get('year'), $wp_query->get('monthnum'), $wp_query->get('day')) . "\">";
echo date("l jS",mktime(0,0,0,$wp_query->get('monthnum'),$wp_query->get('day'),$wp_query->get('year'))) . "</a> » " . wp_title('', false);
endif;
else :
echo "<a href=\"".get_bloginfo('url')."/\">" . get_bloginfo('name') . "</a> » Home";
endif;
?></p>Feel free to use it however you like. Linking back is appreciated though.