comme le titre l'indique, j'essaie de supprimer les balises <li></li>
de la liste générée avec wp_list_pages()
.
Mon idée est de faire en quelque sorte une boucle for/foreach à travers les éléments de menu et de supprimer les balises <li></li>
à l'aide de str_replace()
, mais je devrais d'abord analyser la liste renvoyée dans un tableau ou quelque chose à parcourir à travers les éléments de la liste ...
Des idées sur la façon dont je peux accomplir cela? ou peut-être une meilleure façon de s'y prendre?
Merci d'avance!
Vous pouvez essayer de les supprimer, mais peut-être est-il plus facile de ne pas les générer. La liste de pages est affichée par un Walker . Il s'agit d'une classe qui "parcourt" tous les éléments de l'arborescence et les affiche. wp_list_pages()
par défaut (via walk_page_tree()
) utilise la classe Walker_Page
, qui affiche tout dans les éléments <li>
. Cependant, vous pouvez dupliquer cette classe, supprimer tout ce dont vous n'avez pas besoin et transmettre cette classe à wp_list_pages()
(avec l'argument walker
).
J'ai utilisé la fonction strip_tags:
$args = array('child_of' => $parent, 'echo' => false, 'title_li' => false, 'depth' => 0);
$output .= strip_tags(wp_list_pages($args), "<a>");
si vous ne voulez pas créer votre propre marcheur, utilisez simplement str_replace(array('<li>', '</li>', '<ul>', '</ul>'), '', wp_list_pages('echo=0'));
Merci pour les réponses les gars, j'ai modifié ma réponse pour refléter le commentaire de Jan Fabry à propos de l'argument echo=0
, également merci à One Trick Pony pour l'avoir souligné au départ.
$lookfor = array('<li','</li>');
$replacewith = array('<div', '</div>');
$args = array(
'echo' => 0,
'sort_column' => 'menu_order',
'title_li' => __('')
);
$output = wp_list_pages( $args );
echo str_replace($lookfor,$replacewith,$output);
Je vais certainement envisager de créer un marcheur personnalisé, car cela semble être le meilleur moyen d’atteindre le résultat?
Merci encore pour toute votre aide!