Mostrar solo 2do nivel de navegación dependiendo de la navegación activa

4

Por ejemplo, supongamos un menú así:

Parent 1
  Child A
  Child B
Parent 1
  Child C
  Child D
  Child E
Parent 2
  Child F

En una parte determinada de mi plantilla, quiero que se muestre algo según la "ubicación" actual en el menú. Si el usuario está en las páginas Parent 1 , Child C , Child D o Child E , entonces quiero que aparezca un pequeño menú que diga Parent 1 como encabezado y los hijos como enlaces. He intentado una variedad de cosas (crear un objeto walker personalizado, escribir css para no mostrar los elementos que no se deben mostrar, etc.) Además, si no hay niños, no quiero mostrarlos. el padre incluso en la propia página del padre. ¿Esto tiene sentido?

No quiero un complemento que haga / ayude con esto (no me gusta que mi plantilla "dependa" de un complemento)

    
pregunta Matthew 05.04.2012 - 00:11

1 respuesta

1

Intenta esto: no lo he implementado completamente, pero lo he probado y parece que funciona. Colóquelo en sus funciones.php y llame a <?php list_child_pages(); ?> en su plantilla o use el shortcode [childpages] en su editor.

<?php
// List Child pages of a parent. 
function list_child_pages() {

global $post;

if ( is_page() && $post->post_parent )
    $childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->post_parent . '&echo=0' );
else
    $childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=0' );

if ( $childpages ) { ?>
    <menu>
        <ul class="side-nav">
            <?php echo $string = $childpages; ?>
        </ul>
    </menu>
<?php   
}

return $string;

}
// Add Shortcode for additional support, not just in the theme template
add_shortcode('childpages', 'list_child_pages');

?>
    
respondido por el Greg McMullen 29.08.2014 - 14:24

Lea otras preguntas en las etiquetas