Sigurdhsson

Completely irrelevant

Breadcrumbs in Wordpress

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.

This post was written in english, and is categorized as Internet, The Blog, Things I Made.
It was written July 16th, 2007 (17:42 CEST) and has no comments.

« “Calendar Madness” “WTF, NGE” »

No comments on this post

Use the comment form to post a comment, or get the trackback URI.

No more discussions!

I realize it might seem a bit fascist, but I have disabled commenting on this post.

About me

Simon Sigurdhsson

Simon Sigurdhsson is a swedish student at Chalmers Tekniska Högskola, aimimng for a master's degree in mathematics.

Email
Sigurdhsson{at}gmail.com
Jabber
Sigurdhsson{at}gmail.com
MSN
Sigurdhsson{at}gmail.com
Facebook
Simon Sigurdhsson
Twitter
urdh
dopplr
urdh
del.icio.us
urdh
last.fm
TinyGuy
flickr
TinyGuy

Search

Asides

  • I just read the best god damn article ever. #
  • Microsoft can't even make bug-free mp3 players. #
  • WordPress admin pages need to stop stealing focus when they reload. It's incredibly annoying. #
  • Check out Logospire - an elegantly crafted logo gallery. #
  • An Event Apart - <3 HTML5. #

del.icio.us

Twitter

  • Twitter is not responding...

last.fm

  1. cd cover
  2. cd cover
  3. cd cover
  4. cd cover
  5. cd cover

flickr