Bar-getrennte Navigation durch Erweitern von Walker_Nav_Menu

Ich habe das folgende Menü in meiner Kopfzeile:

 'Main Menu', 'container' => false, 'depth' => 1, 'items_wrap' => '%3$s', 'walker' => new Bar_List_Walker_Nav_Menu ); wp_nav_menu($args); ?> 

und ich möchte die Ausgabe so aussehen lassen:

 link1 | link2 | link3 | link4 | link5 

Also machte ich mich auf den Weg, hier eine Walker-function zu machen:

 class Bar_List_Walker_Nav_Menu extends Walker_Nav_Menu { public $count; function start_lvl(&$output, $depth) {} function end_lvl(&$output, $depth) {} function start_el(&$output, $item, $depth, $args) { $attributes = ! empty( $item->target ) ? ' target="' . esc_attr( $item->target ) .'"' : ''; $attributes .= ! empty( $item->url ) ? ' href="' . esc_attr( $item->url ) .'"' : ''; $item_output .= ''; $item_output .= apply_filters( 'the_title', $item->title, $item->ID ); $item_output .= ''; $output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args ); } function end_el(&$output, $item, $depth) { static $count; $count++; if(!$this->count >= $count) { $output .= " | "; } } function walk( $elements, $max_depth ) { $this->count = count($elements); parent::walk( $elements, $max_depth ); } } 

Dies gibt den folgenden Fehler aus:

 Warning: Missing argument 4 for Bar_List_Walker_Nav_Menu::start_el() in C:\xampp\DEV\Stace\trunk\wp-content\themes\philosophy\functions.php on line 100 

Wenn ich die function walk() aus meiner walker-class entferne, funktioniert es gut, außer dass die Zählung nicht mehr erfasst wird und als Ergebnis ein | Zu viele werden am Ende meiner Navigation hinzugefügt.

Kann jemand den Code bearbeiten, um zu meiner gewünschten Ausgabe zu kommen?

Solutions Collecting From Web of "Bar-getrennte Navigation durch Erweitern von Walker_Nav_Menu"

Sie können die Menüfolge innerhalb des Elements verwenden, um zu sehen, ob es nicht zuerst angezeigt wird. Wenn es nicht ist, zeichne den Charakter vor dem Anker.

 class Bar_List_Walker_Nav_Menu extends Walker_Nav_Menu { private $separator = " | "; function start_el(&$output, $item, $depth, $args) { if($item->menu_order > 1){ $output .= $this->separator; } $attributes = ! empty( $item->target ) ? ' target="' . esc_attr( $item->target ) .'"' : ''; $attributes .= ! empty( $item->url ) ? ' href="' . esc_attr( $item->url ) .'"' : ''; $output .= ''; $output .= apply_filters( 'the_title', $item->title, $item->ID ); $output .= ''; } } 

Nach einigen Diskussionen im Chat:

 class Bar_List_Walker_Nav_Menu extends Walker_Nav_Menu { public $count; function start_el(&$output, $item, $depth, $args) { $attributes = ! empty( $item->target ) ? ' target="' . esc_attr( $item->target ) .'"' : ''; $attributes .= ! empty( $item->url ) ? ' href="' . esc_attr( $item->url ) .'"' : ''; $output .= ''; $output .= apply_filters( 'the_title', $item->title, $item->ID ); $output .= ''; } function end_el(&$output, $item, $depth) { static $count; $count++; if($this->count > $count) $output .= " | "; } function walk( $elements, $max_depth, $r ) { $this->count = count($elements); return parent::walk( $elements, $max_depth, $r ); } }