2015-12-28 6 views
5

Ho un Walker_Page classe personalizzata che ho esteso in questo modo:estesa Walker_Page non emette start_lvl personalizzato() o end_lvl()

class List_Nav extends Walker_Page { 
    function start_lvl(&$output, $depth = 0, $args = array()) { 
    $indent = str_repeat("\t", $depth); 
    $output .= "\n$indent<ul class='ListNav'>\n"; 
    } 

    function start_el(&$output, $page, $depth = 0, $args = array(), $current_page = 0) { 
    $output .= '<li class="ListNav-item">'; 
    $output .= '<a class="ListNav-link" href="' . get_permalink($page->ID) . '">' . apply_filters('the_title', $page->post_title, $page->ID) . '</a>'; 
    $output .= '</li>'; 
    } 

    function end_lvl(&$output, $depth = 0, $args = array()) { 
    $indent = str_repeat("\t", $depth); 
    $output .= "\n$indent</ul>\n"; 
    } 
} 

Ma io non sto ottenendo alcuna uscita dal start_lvl o end_lvl funzioni. C'è qualcosa che mi manca qui o che devo tornare? Sto ottenendo l'output <li> da start_el().


aggiornamento con l'utilizzo

Ecco come sto usando il girello:

if ($post->post_parent) { 
    $ancestors=get_post_ancestors($post->ID); 
    $root = count($ancestors) - 1; 
    $top_parent = $ancestors[$root]; 
} else { 
    $top_parent = $post->ID; 
} 

$page_list_args = array(
    'child_of'  => $top_parent, 
    'depth'  => 0, 
    'title_li'  => false, 
    'walker'  => new List_Nav 
); 

wp_list_pages($page_list_args); 
+0

Non si sta restituendo la variabile di uscita! non è vero? – Thamilan

+0

Raccontaci come usi questa lezione, quindi possiamo riprodurre il tuo caso? – aeryaguzov

+0

@Thamizhan Niente .. E non sto ottenendo nulla cercando di 'var_dump',' echo', 'return' o anche' die() '. –

risposta

2

Sembra start_lvl() e end_lvl() è sempre chiamato all'interno del ciclo e mai su un primo livello. Questo vale per tutti i WordPress Walkers come Walker_Nav_Menu, Walker_Page e Walker_Category.

Non è molto chiaro ma si può indovinare quando si guarda il Core Walker code o quando si legge il Walker documentation su start_lvl().

Ma nella documentazione per Walker::start_lvl si dice solo che ...

Avvia la lista prima vengono aggiunti gli elementi.

Quindi, forse, ciò che dovrebbe essere fatto è un aggiornamento nei documenti.