Created
January 25, 2015 17:55
-
-
Save Ollo/a28924091fbf97858c28 to your computer and use it in GitHub Desktop.
wp_nav walker class
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// walker menu for breadcrumbs | |
wp_nav_menu( array( | |
'container' => 'none', | |
'theme_location' => 'header-menu', | |
'walker'=> new SH_BreadCrumbWalker, | |
'items_wrap' => '<div id="breadcrumb-%1$s" class="%2$s">%3$s</div>' | |
)); | |
class SH_BreadCrumbWalker extends Walker{ | |
/** | |
* @see Walker::$tree_type | |
* @var string | |
*/ | |
var $tree_type = array( 'post_type', 'taxonomy', 'custom' ); | |
/** | |
* @see Walker::$db_fields | |
* @var array | |
*/ | |
var $db_fields = array( 'parent' => 'menu_item_parent', 'id' => 'db_id' ); | |
/** | |
* delimiter for crumbs | |
* @var string | |
*/ | |
var $delimiter = ' > '; | |
/** | |
* @see Walker::start_el() | |
* | |
* @param string $output Passed by reference. Used to append additional content. | |
* @param object $item Menu item data object. | |
* @param int $depth Depth of menu item. | |
* @param int $current_page Menu item ID. | |
* @param object $args | |
*/ | |
function start_el(&$output, $item, $depth, $args) { | |
//Check if menu item is an ancestor of the current page | |
$classes = empty( $item->classes ) ? array() : (array) $item->classes; | |
$current_identifiers = array( 'current-menu-item', 'current-menu-parent', 'current-menu-ancestor' ); | |
$ancestor_of_current = array_intersect( $current_identifiers, $classes ); | |
if( $ancestor_of_current ){ | |
$title = apply_filters( 'the_title', $item->title, $item->ID ); | |
//Preceed with delimter for all but the first item. | |
if( 0 != $depth ) | |
$output .= $this->delimiter; | |
//Link tag attributes | |
$attributes = ! empty( $item->attr_title ) ? ' title="' . esc_attr( $item->attr_title ) .'"' : ''; | |
$attributes .= ! empty( $item->target ) ? ' target="' . esc_attr( $item->target ) .'"' : ''; | |
$attributes .= ! empty( $item->xfn ) ? ' rel="' . esc_attr( $item->xfn ) .'"' : ''; | |
$attributes .= ! empty( $item->url ) ? ' href="' . esc_attr( $item->url ) .'"' : ''; | |
//Add to the HTML output | |
$output .= '<a'. $attributes .'>'.$title.'</a>'; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment