web-dev-qa-db-fra.com

insertion de la classe li personnalisée dans wp_list_pages

J'ai actuellement une page parent avec des pages enfants. Je suis en mesure de lister ces pages enfants, mais j'aimerais insérer une classe li personnalisée. Le wp_list_pages génère <li class="page-item number"></li>. Je voudrais qu'il produise <li class="hvr-underline"></li>. Voici le code que j'ai jusqu'à présent:

$children = wp_list_pages( 'title_li=&child_of='.$post->ID.'&echo=0' );

if ( $children) : ?>
    <ul class="menu ">
        <?php echo $children; ?>
    </ul>
<?php endif;
2
steamfunk

wp_list_pages vous permet d'inclure une fonction de déambulateur. Cela vous donnerait une totale liberté pour ajouter les classes de votre choix, mais ce n'est pas une méthode pour débutant. Vous pourriez commencer par en lisant ceci .

Si vous souhaitez effectuer une recherche simple et remplacer dans la classe, comme votre question semble l'indiquer, vous pouvez utiliser le filtre wp_list_pages comme ceci:

add_filter ('wp_list_pages','wpse241119_replace_class',10,3);
function wpse241119_replace_class ($output, $r, $pages) {
  $output = str_replace ('page-item number', 'hvr-underline', $output);
  return $output;
  }
1
cjbj

S'il n'y a aucune raison de vous arrêter, vous pouvez résoudre ce problème simplement en ajoutant une classe à ul et en utilisant un sélecteur plus complexe dans votre code CSS ou JavaScript:

$children = wp_list_pages( 'title_li=&child_of='.$post->ID.'&echo=0' );

if ( $children) : ?>
    <ul class="menu wpse241119_list">
        <?php echo $children; ?>
    </ul>
<?php endif;

Ensuite, adressez chaque li en tant que ul.wpse241119_list li ou, si la liste peut être imbriquée, ul.wpse241119_list > li pour intercepter les éléments de liste de niveau supérieur.

1
Andy Macaulay-Brook