Pregunta

Esta pregunta sigue de este:

Navegación separada por la barra extendiendo Walker_Nav_Menu

Estoy tratando de hacer lo mismo pero esta vez estoy extendiendo Walker_Page en cambio.

El problema que tengo es que estoy estableciendo la profundidad en 1 y en esa profundidad puede haber 4 páginas. Pero en el walk() El número de elementos devueltos son más. Porque el número de elementos devueltos es más que la cantidad de páginas que se muestran, entonces obtengo una barra | Demasiados agregados al final de mi menú.

Aquí está el código que tengo hasta ahora:

<?php
$children = get_pages('child_of='.$post->ID);
if( 0 != count( $children ) ) {
    $child_of = $post->ID;
} else {
    $child_of = $post->post_parent;
}
$args = array(
    'depth'        => 1,
    'child_of'     => $child_of,
    'title_li'     => '',
    'echo'         => 1,
    'sort_column'  => 'menu_order, post_title',
    'walker' => new Bar_List_Walker_Page
);
wp_list_pages( $args );
?>

Mi caminante:

class Bar_List_Walker_Page extends Walker_Page {
    public $count;
    public $running_count;
    function __construct() {
        $this->count = 0;
        $this->running_count = 0;
    }
    function start_el(&$output, $page, $depth, $args, $current_page) {
        extract($args, EXTR_SKIP);
        $css_class = array();
        if ( !empty($current_page) ) {
            $_current_page = get_page( $current_page );
            _get_post_ancestors($_current_page);
            if ( isset($_current_page->ancestors) && in_array($page->ID, (array) $_current_page->ancestors) )
                $css_class[] = 'current_page_ancestor';
            if ( $page->ID == $current_page )
                $css_class[] = 'current_page_item';
            elseif ( $_current_page && $page->ID == $_current_page->post_parent )
                $css_class[] = 'current_page_parent';
        } elseif ( $page->ID == get_option('page_for_posts') ) {
            $css_class[] = 'current_page_parent';
        }
        $css_class = implode(' ', apply_filters('page_css_class', $css_class, $page));
        $output .= '<a class="' . $css_class . '" href="' . get_permalink($page->ID) . '">' . apply_filters( 'the_title', $page->post_title, $page->ID ) . '</a>';
    }
    function end_el(&$output, $item, $depth) {
        $this->running_count++;
        if($this->count > $this->running_count)
            $output .= " | ";
    }
    function walk( $elements, $max_depth, $r ) {
        $this->count = count($elements);
        return parent::walk( $elements, $max_depth, $r );
    }
}

¿Cómo consigo que mi caminante obtenga la cantidad correcta de páginas en el nivel que me dirijo?

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
scroll top