infographiste@gmail.com

Bienvenue sur cet article

Malgré le soin apporté à la rédaction de cet article, des fautes d'orthographes, de grammaire ou de conjugaison ont sans doute échappés à ma vigilance. Plus grave, des erreurs ou inexactitudes sur le fond ont pu se glisser à l'insu de mon plein gré. N'hésitez pas à me signaler ce qui est perfectible dans les commentaires ou en utilisant la page de contact. Bonne dégustation !
infographiste@gmail.com

WordPress : astuces pour afficher une page "autonome" avec wp_list_pages()

Tandis que fran6 s’interrogeait sur la création d’une page statique comme page d’accueil d’un blog WordPress, je me demandais comment créer une page prestations.php (teasing inside) affichant certaines catégories de billets dans une maquette spécifique. Je parle d’une page utilisant les boucles WordPress se suffisant donc à elle-même, et pas d’un Modèle de Page à remplir ultérieurement. Tout en sachant que j’ai besoin que cette page soit considérée comme une Page afin d’apparaître avec le marqueur wp_list_pages()

Avant d’arriver à définir ce besoin, j’ai commencé bille en tête par faire la page prestations.php que j’ai tenté d’afficher directement avec…

<?php include (TEMPLATEPATH . '/prestations.php'); ?>

…avant de me rendre compte que si le fichier en question n’était pas parsé par le moteur de WordPress via l’URL, il n’y avait aucune chance pour que les billets en question s’affichent ^_^

Création de la Page autonome

Cette notion fondamentale étant rappelée, comment faire ? J’ai simplement procédé par étapes : dans le panel d’administration de WordPress, j’ai créé une nouvelle page avec Prestations comme titre, j’ai sélectionné ensuite le modèle de page Prestations qui apparait lorsqu’on ajoute le marqueur qui va bien en haut de la page :

<?php /* Template Name: Prestations */ ?>

Et là, comme je n’avais rien à saisir de plus (le contenu étant censé s’afficher avec les boucles WP), je l’ai enregistré sans rien ajouter d’autre (le billet doit rester vide). Je me suis dit que sur un malentendu, ça pouvait marcher ;)
Et ça marche ! La page prestations.php, qui contient deux boucles pour afficher deux catégories de billet l’une en dessous de l’autre, apparaît avec les autres Pages et son contenu s’affiche parfaitement. WordPress a simplement besoin d’un nom de Page dans sa base de données pour la parser lorsqu’elle apparaît dans l’URL.

Rappels pour afficher deux catégories de billets dans deux boucles sur la même page

Pendant que j’y suis, voici quelques lignes présentes dans prestations.php pour afficher les 3 derniers billets de la catégorie “blog-pro”, par exemple :

<div class="content primary-content">
    <?php query_posts('category_name=blog-pro&showposts=3'); ?>
        <?php while ( have_posts() ) : the_post() ?>
            [Le reste de la boucle ici]
        <?php endwhile ?>
</div><!– end .content .primary-content –>

Voici maintenant les 3 derniers billets de la catégorie “prestations” :

<div class="content secondary-content">
    <?php query_posts('category_name=prestations&showposts=3'); ?>
         <?php while ( have_posts() ) : the_post() ?>
            [Le reste de la boucle ici]
        <?php endwhile ?>
</div><!– end .content .secondary-content –>

Voilà, tout est dans la fonction query_posts() qui permet de faire une requête à la base de donnée en remettant les compteurs à zéro, ce qui permet une souplesse inégalable dans l’élaboration des templates.

Tags : , , , , |
Publié le 10 juin 2007 par Bruno Bichet.

9 participations à l'article

  1. Fran6 a parlé le 11 juin 2007 à 12:14 | Permalien

    Et oui, pas si facile que ça, la vie en Wordpress !! ;-) Mais le sujet n’est pas encore clos puisque je vais en rajouter une couche dans la semaine. J’hésiterai pas à parler de ton article vraiment très intéressant et qui apporte une pierre de plus à l’édification de Wordpress en CMS….;-)

  2. br1o a parlé le 11 juin 2007 à 12:59 | Permalien

    fran6 > Merci, au fait, je suis passé voir tes oeuvres sur flickr : j’aime beaucoup !
    a++

  3. Fran6 a parlé le 12 juin 2007 à 11:37 | Permalien

    Merci pour ton soutien ! ;-)

  4. HakunaMatata a parlé le 20 juin 2007 à 18:36 | Permalien

    J’ai essayé ton truc mais je n’obtiens rien, j’ai crée une page avec comme titre "actu" un fichier template avec comme template name : "actu" actu.php, visible dans mon editeur de theme mais rien alors que j’ai copié colle le contenu de pages.php dedans… et j’ai mis la page en page d’accueil…

    peut etre qu’il ya un truc pour attaché la page au fichier ?

    merci

  5. br1o a parlé le 20 juin 2007 à 18:48 | Permalien

    HakunaMatata > As-tu bien sélectionné actu.php dans le menu déroulant "Modèle de page" lors de la création de ta page ?

    Tiens-moi au courant ;)

  6. Hegyz a parlé le 17 octobre 2007 à 11:19 | Permalien

    Génial ce petit tuto, je cherchais depuis 2 semaines à créer une liste de mes pages dans une page… grâce à toi et à fran6art.com, j’ai réussi..

    Longue vie et prospérité !!!!

  7. marc a parlé le 7 février 2008 à 21:42 | Permalien

    Bonjour,
    J’ai essayé pour ma part de créer une page d’affichage spécifique type blog.
    J’ai donc nommé blog.php, je l’ai glisser dans le doss de mon template.
    J’ai fait exactement ce que tu as dit, mais ca n’affiche pas correctement.
    Pourtant si je prend le contenu de blog.php et que je le colle par ex dans archive.php, la pas de soucis..

    Ce que je veux c’est créer un lien dans mon menu qui affiche tous les posts en mode “blog” donc 1 colonne, au lieu des 3 de mon template.
    Comment faire?

    Merci

  8. Bruno Bichet a parlé le 7 février 2008 à 22:44 | Permalien

    Salut @marc : est-ce que tu as bien ajouté le commentaire <?php /* Template Name: Prestations */ ?> en haut de blog.php ? Et si oui, ce template apparait-il bien comme modèle de page dans l’admin lors de la création de la page ?

  9. marc a parlé le 7 février 2008 à 23:09 | Permalien

    oui il apparait dans les modeles de pages.
    cf la page concernée : http://generationsfm.com/streetblogger/blog

    merci

Participez à l'article

Votre email ne sera jamais publié ou divulgué.

Suivre les commentaires de ce billet par RSS ?