web-dev-qa-db-fra.com

Ajouter une classe aux éléments de wp_list_pages

Je veux juste ajouter une classe pour la page active dans wp_list_pages (). Est-ce possible? Si tel est le cas, puis-je fournir une classe particulière pour une page active? Voici mon code pour lister la page parent et sa sous page.

       <?php



$output = wp_list_pages('echo=0&depth=1&title_li= &sort_column=menu_order' );
if (is_page( )) {
  $page = $post->ID;
  if ($post->post_parent) {
    $page = $post->post_parent;
  }

  $children=wp_list_pages( 'echo=0&depth=1&child_of=' . $page . '&title_li=&sort_column=menu_order' );
  if ($children) {
    $output = wp_list_pages ('echo=0&depth=1&child_of=' . $page . '&title_li= &sort_column=menu_order');
  }
}
?>
 <li><a href="<?php echo get_permalink( $post->post_parent ); ?>" class="active">Home</a></li>
<?php 
echo $output;


              ?>

S'il vous plaît, aidez-moi. Je veux ajouter le nom de la classe "active" à la page active dans wp_list_pages (). Par exemple, je souhaite afficher mes pages WP comme suit.Si je sélectionne la sous-page 3, je souhaite ajouter la classe active uniquement à cette page particulière.

<div class="page-menu">
                <ul>                    
                    <li><a href="#" title="">Home</a></li>
                    <li><a href="#" title="">1</a></li>
                    <li><a href="#" title="">2</a></li>
                    <li><a href="#" title="" class="active">3</a></li>
                    <li><a href="#" title="">4</a></li>
                    <li><a href="3" title="">5</a></li>
                </ul>
            </div>
2
user2754416

Problème résolu..

Je viens d'ajouter le css comme suit et cela résout le problème.

.page-menu ul li.current_page_item a{
    background-color:#445C1C;
    }

Pour ajouter la classe à la page parent, j'ai utilisé le code suivant

 <li><a href="<?php echo get_permalink( $post->post_parent ); ?>" <?php if(is_page($post->post_parent )) {?> class="active" <?php }?>>Home</a></li>

J'espère que cela pourra aider quelqu'un à l'avenir qui est confronté au même problème que celui que j'ai rencontré :)

1
user2754416

Comme wp_list_pages() a un argument de walker, vous pouvez l'utiliser pour remplacer ce qui est utilisé par walk_page_tree() en tant que classe de déambulateur interne.

@ Brady a laissé un Nice exemple dans cette réponse .

class WPSE113482PageWalker extends Walker_Page
{
    function start_el( &$output, $page, $depth, $args, $current_page )
    {
        // Build $output here and apply your class for the active item
    }
}

Vous pouvez également envisager d’utiliser wp_page_menu() .

1
kaiser