web-dev-qa-db-fra.com

Faire wp_list_pages imprimer des slugs au lieu de titres

Wp_list_pages crée par défaut une liste non ordonnée de titres d'articles. Pour économiser de l’espace dans un menu de la barre latérale, j’essaie de créer une liste de slug de page au lieu de titres de page.

Je suppose que j’aurai besoin d’écrire un lecteur personnalisé. J'espérais que quelqu'un pourra m'aider avec une solution plus simple ou un extrait de code.

1
Mattvic

Je recommanderais d'utiliser get_pages() plutôt que wp_list_pages() à cette fin.

La fonction get_pages() renvoie un tableau d'objets de pages. Vous pouvez utiliser les données du tableau pour créer votre propre liste HTML. par exemple.:

<?php
// Wrap in a function, for later output;
function wpse47989_list_pages() {
    // Get an array of pages using default arguments
    // See Codex for list of arguments
    $wpse47989_pages = get_pages();

    // Open the unordered list
    $page_list = '<ul>';

    // Loop through the results, and output an HTML list
    foreach ( $wpse47989_pages as $wpse47989_page ) {
        // Open the list item
        $page_list .= '<li>';
        // Open the link
        $page_list .= '<a href="' . $wpse47989->permalink . '">';
        // Link anchor text (post slug)
        $page_list .= $wpse47989_page->post_name;
        // Close the link
        $page_list .= '</a>';
        // Close the list item
        $page_list .= '</li>';
    }

    // Close the unordered list
    $page_list .= '</ul>';
}
?>

Ensuite, bien sûr, il vous suffit de sortir la fonction où vous souhaitez afficher la liste. (Remarque: ce serait un bon candidat pour un widget personnalisé. Vous pouvez même passer les arguments de la fonction get_pages() en tant qu'options du widget.)

Vous devrez peut-être manipuler la sortie foreach pour le style/etc.

2
Chip Bennett