bloginfo('url')
– This is the URL for your site$item->taxonomy
– This is the name of the taxonomy the term is in$item->name
– This is the name of the taxonomy term
get_term_by()
, but it doesn’t now, which is why I did it this way.
With that said, here’s the code. Place this in your functions.php file (or custom_functions.php for Thesis):
[php]
<div id="LC1"><?php</div>
<div id="LC2">/* Taxonomy Breadcrumb */</div>
<div id="LC3">function be_taxonomy_breadcrumb() {</div>
<div id="LC4">// Get the current term</div>
<div id="LC5">$term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) );</div>
<div id="LC6"></div>
<div id="LC7">// Create a list of all the term's parents</div>
<div id="LC8">$parent = $term->parent;</div>
<div id="LC9">while ($parent):</div>
<div id="LC10">$parents[] = $parent;</div>
<div id="LC11">$new_parent = get_term_by( 'id', $parent, get_query_var( 'taxonomy' ));</div>
<div id="LC12">$parent = $new_parent->parent;</div>
<div id="LC13">endwhile;</div>
<div id="LC14">if(!empty($parents)):</div>
<div id="LC15">$parents = array_reverse($parents);</div>
<div id="LC16"></div>
<div id="LC17">// For each parent, create a breadcrumb item</div>
<div id="LC18">foreach ($parents as $parent):</div>
<div id="LC19">$item = get_term_by( 'id', $parent, get_query_var( 'taxonomy' ));</div>
<div id="LC20">$url = get_bloginfo('url').'/'.$item->taxonomy.'/'.$item->slug;</div>
<div id="LC21">echo '<li><a href="'.$url.'">'.$item->name.'</a></li>';</div>
<div id="LC22">endforeach;</div>
<div id="LC23">endif;</div>
<div id="LC24"></div>
<div id="LC25">// Display the current term in the breadcrumb</div>
<div id="LC26">echo '<li>'.$term->name.'</li>';</div>
<div id="LC27">}</div>
[/php]
To use it in your theme, simply call be_taxonomy_breadcrumb()
within a <ul>
Revisions
- April 29, 2012 @ 14:25:33 [Current Revision] by PeterLugg
- April 29, 2012 @ 14:21:23 by PeterLugg
Revision Differences
April 29, 2012 @ 14:21:23 | Current Revision | ||
---|---|---|---|
Content | |||
Added: Taken from Bill Ericson: http: //www.billerickson.net/wordpress- taxonomy-breadcrumbs/ | |||
Added: This post has been marked as <strong>old</strong>. The code might no longer work. Comments have been disabled as this is no longer maintained. Use the search on the right to find a newer tutorial. | |||
Added: I’m working on a project right now that uses hierarchical taxonomies, and the client requested a breadcrumb along the top. I searched online but couldn’t find any good existing plugins, so thought I’d write my own. | |||
Added: Note: This was built for WordPress 3.03. WordPress 3.1 (hopefully coming out this month) will add a lot of features to taxonomies, including hierarchical URLs. This solution is NOT designed for hierarchical URLs. If you read through the code you’ll see I’m assembling them with 3 things: | |||
Deleted: | Added: <ul> | ||
Added: <li><code>bloginfo( 'url')</code> – This is the URL for your site</li> | |||
Added: <li><code>$item- >taxonomy</code> – This is the name of the taxonomy the term is in</li> | |||
Added: <li><code>$item- >name</code> – This is the name of the taxonomy term</li> | |||
Added: </ul> | |||
Added: Since WordPress doesn’t currently support hierarchical URLs for taxonomies, no matter how deep your term is it will still have the url structure of yoursite.com/ taxonomy-name/ taxonomy-term. Hopefully 3.1 will give us a URL from <code>get_ term_by()</code>, but it doesn’t now, which is why I did it this way. | |||
Added: With that said, here’s the code. Place this in your functions.php file (or custom_functions.php for Thesis): | |||
Added: [php] | |||
Added: <div id="LC1" ><?php</div> | |||
Added: <div id="LC2">/* Taxonomy Breadcrumb */</div> | |||
Added: <div id="LC3" >function be_taxonomy_breadcrumb() {</div> | |||
Added: <div id="LC4">// Get the current term</div> | |||
Added: <div id="LC5">$term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) );</div> | |||
Added: <div id="LC6" ></div> | |||
Added: <div id="LC7">// Create a list of all the term's parents</div> | |||
Added: <div id="LC8">$parent = $term->parent; </div> | |||
Added: <div id="LC9">while ($parent):</div> | |||
Added: <div id="LC10" >$parents[] = $parent;</div> | |||
Added: <div id="LC11" >$new_parent = get_term_by( 'id', $parent, get_query_var( 'taxonomy' ));</div> | |||
Added: <div id="LC12">$parent = $new_parent-> parent;</div> | |||
Added: <div id="LC13" >endwhile; </div> | |||
Added: <div id="LC14" >if(!empty($parents)): </div> | |||
Added: <div id="LC15" >$parents = array_reverse( $parents);</div> | |||
Added: <div id="LC16" ></div> | |||
Added: <div id="LC17">// For each parent, create a breadcrumb item</div> | |||
Added: <div id="LC18">foreach ($parents as $parent):</div> | |||
Added: <div id="LC19">$item = get_term_by( 'id', $parent, get_query_var( 'taxonomy' ));</div> | |||
Added: <div id="LC20">$url = get_bloginfo( 'url').'/'.$item- >taxonomy.'/ '.$item->slug; </div> | |||
Added: <div id="LC21">echo '<li><a href="'.$url.'" >'.$item->name.'< /a></li> ';</div> | |||
Added: <div id="LC22" >endforeach; </div> | |||
Added: <div id="LC23" >endif;</div> | |||
Added: <div id="LC24" ></div> | |||
Added: <div id="LC25">// Display the current term in the breadcrumb</div> | |||
Added: <div id="LC26">echo '<li>'.$term- >name.'< /li>';</div> | |||
Added: <div id="LC27" >}</div> | |||
Added: [/php] | |||
Added: To use it in your theme, simply call <code>be_ taxonomy_breadcrumb( )</code> within a <code>< ul></code> |
Note: Spaces may be added to comparison text to allow better line wrapping.
No comments yet.