最好的方法是wp_nav_menu
带着一个定制的助行器。
先决条件:
<?php wp_nav_menu( array(
\'container\' => \'none\',
\'theme_location\' => \'primary\',
\'walker\'=> new SH_BreadCrumbWalker,
\'items_wrap\' => \'<div id="breadcrumb-%1$s" class="%2$s">%3$s</div>\'
) ); ?>
定制助行器这是非常基本的。(这可以通过另一种方式完成-覆盖
display_element
相反?-但我发现这是最直接的)。这应该住在你的
functions.php
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>\';
}
}
}