Créer un sitemap sans plugin avec WordPress

Un plan de site – sitemap en anglais, est très utile pour vos visiteurs et les moteurs de recherche qui visualisent en un coup d’œil la structure de votre site. Avec WordPress, quelques lignes de code suffisent couplées au système de modèle de pages.


Étape n°1 – Création du modèle de page PHP

A l’aide du Bloc-note de votre choix, créez un nouveau fichier que vous intitulerez sitemap.php. Si vous le pouvez, optez pour un encodage UTF-8 pour une meilleure compatibilité.

Collez dans un premier temps les lignes de code suivante :

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

Elles indiquent le nom du modèle de page qui sera affiché dans l’outil de création de pages de WordPress.

Ensuite, nous allons reconstituer la structure de la page. Cette structure est facile à reprendre car il suffit d’ouvrir le fichier page.php et dans coller la structure conformément au thème. Par défaut, il nous faut au moins récupérer le header et appeler la boucle (loop) :

<?php get_header(); ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>

Pour finir, copiez / collez les lignes de code PHP suivantes :

<h3><?php _e('Pages') ?></h3>
<ul>
<?php wp_list_pages('depth=0&sort_column=menu_order&title_li=' ); ?>
</ul>
<h3><?php _e('Catégories') ?></h3>
<ul>
<?php wp_list_categories('title_li=&hierarchical=0&show_count=1') ?>
</ul>
<h3>Articles par catégories</h3>
<?php $saved = $wp_query;
$cats = get_categories();
foreach ($cats as $cat) {
query_posts('showposts=999&cat='.$cat->cat_ID);
?>
<h4><?php echo $cat->cat_name; ?></h4>
<ul>
<?php while (have_posts()) : the_post(); ?>
<li style="font-weight:normal !important;"><a href="<?php the_permalink() ?>"><?php the_title(); ?></a> - <?php _e('Commentaires') ?> (<?php echo $post->comment_count ?>)</li>
<?php endwhile;  ?>
</ul>
<?php } $wp_query = $saved; ?>

Envoyez à présent le fichier dans le dossier de votre thème localisé dans /wp-content/themes/NOM_DU_THEME/

Étape n°2 – Création de la page Sitemap

Rendez-vous maintenant dans l’administration de votre site WordPress puis créez une nouvelle page via le menu Pages puis Ajouter.

Commencez par lui donner un nom ; par exemple, Plan du site.

Dans la section Attributs, déroulez la liste des modèles de page puis indiquez Sitemap. Il s’agit bien du nom que nous avons fourni dans le fichier sitemap.php.

Capture d'écran - Définition d'un modèle de page Plan du site

Le modèle de page Sitemap utilisera donc le code du fichier sitemap.php

Faites donc Publier puis visualisez la page pour constater le résultat.

Très important, le plan du site est un élément important de votre stratégie de référencement mais également pour permettre à vos visiteurs de se localiser sur votre site. Et vous amis lecteurs, avez-vous créé votre plan de site ?

Crédits photo : boxman

Articles relatifs

139 réflexions au sujet de « Créer un sitemap sans plugin avec WordPress »

  1. Je pense que je vais m’y mettre quand j’aurais un peu de temps demain…

    Au niveau référencement c’est sensé être mieux que le fameux pluggin Google XML Sitemaps ? Peuvent-ils fonctionner de concert ou risque-t-on un quelconque duplicate contents ?

    Article utile et clair en tout cas !

    • Bonjour,

      Personnellement, j’aurais plus fait un rapprochement avec Dagon Design Sitemap Generator.
      Est-il envisageable d’en prendre une partie pour personnaliser la page erreur 404?

      Heu, vous êtes chez quel hébergeur??? J’ai un gros soucis avec le mien
      Merci d’avance

      • Je suis chez Mavenhosting qui est mon hébergeur favori !

        Je ne comprends pas bien le rapport avec la page d’erreur 404 qui peut être crée manuellement.

        En effet, je n’ai pas évoqué l’utilisation de plugins… mais c’était bien le but de l’article ! ;)

    • Pour moi les 2 plugins doivent fonctionner en parallèle. Un fichier XML Sitemap n’est pas du tout conçu de la même manière et contient d’autres informations (notamment les fréquences de mises à jour, etc.).

      Côté référencement, les 2 solutions sont bénéfiques. ;)

  2. Mavenhosting…..déjà lu ce nom-là. Je ne vais pas tarder du tout à voir ça
    je ne peux notamment même pas faire de sauvegarde de base de données quotidienne, à moins de passer su serveur.
    Mon blog pèse lourd et impossible de compresser…………tout ça découvert récemment

    Sinon, pour la page 404, pour la personnaliser. J’y affiche à l’heure actuelle mes 50 derniers articles

    Là par exemple, je cherche juste une ligne de code pour afficher les articles relatifs.
    Simple tags est très très bien mais trop lourd. Je pensais trouver une simple ligne de code, comme celle-là par exemple:

    Mes connaissances sont juste un poil limitées

    • Hum, j’avais collé une ligne de code mais elle n’a ps été prise en compte
      ce n’est pas grave, mais c’est pour expliquer qu’il n’y ait rien après
      Simple tags est très très bien mais trop lourd. Je pensais trouver une simple ligne de code, comme celle-là par exemple:

      • Pour la ligne de code, il faut l’insérer entre les balises code comme indiqué au-dessus de la zone de commentaires.

        Sinon, tu peux me l’envoyer par le formulaire de contact. ;)

        Pour afficher les articles relatifs, j’ai récemment découvert le plugin WordPress 23 Related Posts qui permet de lister les articles relatifs via une simple commande PHP et sans qu’il n’y ait trop d’options de configuration. Gros avantage : on peut choisir parmi la liste des champs personnalisés pour afficher une miniature.

    • Je suis partie, pour d’autres sites sur plantehoster.
      Faudra que je revienne ici pour ce type de plan.
      Mais Dagon design fait du bon boulot…..
      Je ne pense pas que ce soit le plugin le plus lourd.
      Mais bon, chacun son truc. :)

  3. Bonjour,

    J’ai suivi ce tuto, mais j’ai une erreur : serait-il possible que cela ne fonctionne plus une fois activé le multi-site de wp3 ?
    En tout cas Google XML Sitemaps ne fonctionne plus :(

  4. Super tutoriel !
    Par contre j’ai le même souci que DavidT…sauf que je suis toujours en train de courrir après mon unespected $end… php et moi on est pas encore très intime..lol

    merci d’avance pour le coup de main !!

  5. Bonjour et merci pour l’article.

    Après quelques péripéties j’ai réussi à le faire fonctionner. Seulement il ne m’affiche que seulement 5 articles par cétagorie alors qu’il y en a une trentaine parfois. Sauriez-vous pourquoi ?

    Merci par avance.

  6. En fait pour que ça fonctionne comme il faut j’ai du copier la totalité de mon page.php, inclure le code PHP que vous fournissez à l’intérieur de la section dédiée à l’article mais oter la partie « affichage de l’article » (sinon après le plan il m’afficher le dernier article du plan…).

    Du coup ce chiffre 5 est peut-être dû au fait que mon blog n’affiche que 5 article par page. Mais je cherche dans le page.php quelle est la ligne qui fait ça.

    • Pour afficher la totalité des articles par catégorie, il faut modifier le code relatif par :

      <h3>Articles par catégories</h3>
      <?php $saved = $wp_query;
      $cats = get_categories();
      foreach ($cats as $cat) {
      query_posts(‘showposts=999&cat=’.$cat->cat_ID);
      ?>

      Le paramètre showposts fixe la limite du nombre d’article. En indiquant 999 tu es tranquille pour un moment.

      Tu peux donc restaurer tes différents fichiers PHP et reprendre les lignes de code du tutoriel.

      Et merci de ton commentaire ! Je vais modifier l’article en conséquence. ;)

  7. Ping : Ajouter un Plan du Site | Dominique Leweb

  8. Bonjour,

    J’utilise actuellement le plugin Dragon Sitemap, mais effectivement, votre script donne exactement la même chose, du coup en plus léger et en interne : que du bonheur…

    En revanche, il m’intéressait quant à moi, qui à « faire » un poil de code, d’obtenir , en plus de la liste par catégories, la liste de mes articles dans l’ordre chronologique (du plus récent au plus ancien), et tant qu’on y est avec pour chaque mention de ses catégorie, date, auteur, et nombre de coms…

    J’ai essayé cette nuit plusieurs combinaisons, tant avec query_post que get_post, mais je n’arrive pas à obtenir un truc propre avec toutes les infos souhaitées : je sais que c’est vous demander carrément un bon bout de code, mais auriez-vous une idée, d’abord de la fonction à utiliser, et ensuite de la façon de récupérer ces paramètres ?

    Merci d’avance pour votre éventuelle réponse !

  9. Hello ils se trouve que j’ai aussi une erreur : syntax error, unexpected $end in…

    J’ai bien contrôlé mon code et il me semble qu’il ne manque rien ?
    à tout hasard le voici, peut-être ai-je oublié un point ou une virgule ? merci bcp pour l’aide.

    <?php
    /*
    Template Name: Sitemap
    */
    ?>
    <?php get_header(); ?>
    <?php include (TEMPLATEPATH . ‘/sidebar_l.php’); ?>
    <div id= »content »>
    <?php if (have_posts()) : ?>
    <?php while (have_posts()) : the_post(); ?>

    <h3><?php _e(‘Pages’) ?></h3>
    <ul>
    <?php wp_list_pages(‘depth=0&sort_column=menu_order&title_li=’ ); ?>
    </ul>
    <h3><?php _e(‘Catégories’) ?></h3>
    <ul>
    <?php wp_list_categories(‘title_li=&hierarchical=0&show_count=1′) ?>
    </ul>
    <h3>Articles par catégories</h3>
    <?php $saved = $wp_query;
    $cats = get_categories();
    foreach ($cats as $cat) {
    query_posts(‘showposts=999&cat=’.$cat->cat_ID);
    ?>
    <h4><?php echo $cat->cat_name; ?></h4>
    <ul>
    <?php while (have_posts()) : the_post(); ?>
    <li style= »font-weight:normal !important; »><a href= »<?php the_permalink() ?> »><?php the_title(); ?></a> – <?php _e(‘Commentaires’) ?> (<?php echo $post->comment_count ?>)</li>
    <?php endwhile; ?>
    </ul>
    <?php } $wp_query = $saved; ?>

    </div>

    <?php get_sidebar(); ?>

    <?php get_footer(); ?>
    

  10. Ping : 6 modèles de pages indispensables pour WordPress | WordPress Channel

  11. Ping : Le petit journal du web : HTML5, CSS3, jQuery, WordPress, Métiers du Web, Vie quotidienne et Nostalgeek

  12. Pas mal du tout pour créer rapidement une page plan de site.

    Le gros défaut cependant, c’est que le rendu visuel n’est pas très ergonomique pour l’utilisateur, notamment au niveau des catégories/sous catégories.

    Pour ceux que cela intéressent, j’avais réalise un tutoriel pour créer une page plan de site sur WordPress. Mais attention, cela requiert d’installer un plugin, et de modifier son thème.

    Par contre, la méthode donnée ici est parfaite pour le référencement naturel, puisque les moteurs auront accès en un seul clic à l’intégralité des contenus du site.

  13. mais alors, plus besoin de plugin!Tous ces petit tutoriels que vous nous donnez sont extra! Ça allège considérablement le site ..c’est vraiment géniale je trouve! Merci beaucoup, quelle chance de vous avoir trouvé ;-)

  14. il m’est impossible de faire apparaitre ma sidebar. Soit elle apparait et mon sitemap est dans le footer, soit elle disparait et le sitemap est à sa place. J’ ai testé à plein d’endroit le script , mais y rien à faire. Je ne sais plus quoi tester…

  15. j’ ai testé sur le thème « Grassland », mais à la base il n’ a pas de page.php, mais qu’ une index.php, forcement ca ne fonctionne pas…ca veut dire qu’ on ne peut pas générez un « sitemap sans plugin » sur ce theme ou bien?

    PS: j’ ai bien sur testé avec le script index.php

  16. bonjour,

    Je cherche à faire quelque chose de similaire : liste de tous les articles par catégorie et sous-catégories, mais pour l’intégrer comme menu dépliant dans la sidebar.
    Avez vous des pistes pour faire ça ?
    merci

  17. Bonsoir,

    Je tente de créer un sitemap et j’avoue que ce tuto est très instructif.
    J’ai donc suivi la procédure mais je me retrouve avec une erreur de syntaxe ligne 15.

    Je ne vois rien.

    Je joins le code de la page sitemap, peut-être trouverez-vous l’erreur.

    Merci pour l’aide.





    




    
Articles par catégories
    
cat_ID);
    
?>
    
cat_name; ?>


    
<a href= » »> – (comment_count ?>)

    



  18. DSL, ça n’a pas fonctionné pour le code :





    




    
Articles par catégories
    
cat_ID);
    
?>
    
cat_name; ?>


    
<a href= » »> – (comment_count ?>)

    



  19. Bon finalement j’y suis arrivé, mais ce n’est pas très joli.

    Le footer a disparu pourtant il est appelé dans le fichier sitemap.php.

    En revanche, le fond blanc a lui disparu.

    Une idée ?

  20. Bonsoir,

    Je cherche la procédure pour réaliser exactement la même présentation que le sitemap de ce site…

    Pour l’instant, je n’arrive à rien, simplement à lister l’ensemble de mes articles…

    Merci

  21. Sinon, je suis à la recherche d’un tuto ou d’un plugin qui puise m’aider à fabriquer une page « vidéo ».

    Explication :

    Je voudrais que sur la home apparaisse un module avec 1 Vidéo plein format et dessous 3 petites. En dessous, je voufrais mettre un lien « Toutes les vidéos » qui pointe vers la page « Vidéo » où les internautes retrouvent toutes celles misent en ligne (les archives en quelques sorte). Ces vidéos se positionnent 3 par ligne sur 10 lignes par exemple et ainsi de suite. Quand l’internaute clicke dessus, avec lightbox ?, le site devient gris et la Vidéo choisie se joue.
    Compliqué ?

  22. Merci pour tes réponses. Mon tuto m’a bien servi et maintenant je vais me mettre au css.
    Concernant la page VDO, je me doutais bien que les plugins ne me seraient d’aucun secours.
    Pour ce genre de prestation, quel est le montant des honaraires ?
    Cordialement

  23. Bonjour,

    J’ai voulu utliser ce code, tout s’est apperemment ien déroulé, pas d’erreur, et je jubilais déjà.
    MAIS, quand j’ai affiché la page avec le modele, la page est toute blanche !

    pour info : le theme que j’utilise contenanit déjà un fihier sitemap, que j’ai viré du serveur pour mettre celui-ci à la place.
    dans la page.php, il y avait déjà tout un blabla, et j’ai collé le code d’Airélien à la suite.

    Si quelqu’un avait une idée de ce que j’ai du oublier de faire..;

    Merci

    • Bon, j’ai trouvé le souci, c’est juste moi qui m’était plantée en route…J’ai relu attentivement le mode d’emploi, recommencé la manip, et tout s’est déroulé normalement !

      Merci

  24. Ping : Extensions (plugins) WordPress du site | Blog Note

  25. Merci pour ce tuto, très simple et efficace pile ce que je cherchais ;)

    Seul petit bémol, j’ai du coup un onglet « plan du site » dans mon menu horizontal (j’utilise le thème twenty ten), comment l’enlever ? Histoire de le rendre accessible seulement par le footer…
    Merci !

  26. Désolé j’ai pas vraiment compris où est ce qu’il fallait mettre l’ID de la page sitemap.
    Qu’est ce que tu entends par remplacer les xxx ?

  27. t’as toujours pas réussi :P

    -> ( Vous devez remplacez les «  » respectivement par < et > )

    jcomprenais pas ce que tu voulais dire avec « pre »… ^^

  28. Merci pour l’article.

    J’ai du rajouter « à la main » des balises div avec les bonnes classes pour que le CSS global du site soit appliqué correctement.

    Si ça peut aider quelqu’un qui a le même problème.

    • Bonjour,
      j’ai suivi ce tuto (trèsinteressant) mais malheureusement j’ai une erreur lorsque je lance la page du Plan de site :

      « Parse error: syntax error, unexpected $end in /www/blog/wp-content/themes/platform/sitemap.php on line 31″

      J’ai recopié le code à l’identique de ce qui est dit car le code que j’ai dans mon fichier page.php est le suivant :

      < ?php
      /*
      This theme is Copyright (C) 2008-2010 Andrew Powers, PageLines.com (andrew AT pagelines DOT com)
      */

      setup_pagelines_template();

      il n'y a même pas de balise ?>

      Je suis sous WordPress 3.1.2 et j’utilise le thème Platform (et mon blog est sur une boutique prestashop)

      Quelqu’un voit le problème ?

      Merci.

      • Je pense que ton problème vient de ton thème. Non pas que ce dernier soit bugué mais que tu ne dois pas l’insérer au bon endroit.

        La structure des thèmes premium est généralement plus complexe que sur les thèmes de base.

        • Pour l’insérer, je l’ai récupéré « directement » via le BO de wordpress, dans l’onglet « installer des thèmes ». J’ai fait ma recherche et je l’ai installé à partir de là.
          Et j’ai bien le dossier Platform situé dans /blog/wp-content/themes/

          Il n’est pas installé au bon endroit ou il est mal installé ?

          (au cas où ça peux aider, j’avais initialement installer le plug-in suivant : Dagon Design Sitemap Generator. Ca marchait très bien, jusqu’à ce que j’installe le plug-in suivant : DashBoard Google Analitycs (parce que j’avais aussi besoin d’un sitemap au format XML). Comme Dagon Design Sitemap Generator ne fonctionnait plus, je me suis tourné vers ta solution…)

          Merci encore pour ton aide.

        • Bon, je galère toujours…
          je vois que tu parles des thèmes Premium et thèmes de base.
          Comme c’est bcp plus galère avec les thèmes Premium (PlatForm en fait visiblement parti), est-ce que tu pourrais me suggérer un ou deux thèmes de base stp ?
          Parce que si je galère comme ça à chaque install de plug-in, autant que je change dès maintenant de thème.

          Je te remercie pour tes conseils.

  29. Bonjour,

    Je viens de réinstaller une page Sitemap en suivant à la lettre le tuto.

    Quand je lance la page, j’ai ce message :

     » Error 404 – Not found

    Le fichier requis n’a pas été trouvé. Il peut s’agir d’une erreur technique. Veuillez réessayer ultérieurement. Si vous ne pouvez pas accéder au fichier après plusieurs tentatives, cela signifie qu’il a été supprimé.  »

    Ci-dessous le code du sitemap.php

    Articles par catégories
    cat_ID);
    ?>
    cat_name; ?>

    <a href=" »> – (comment_count ?>)

  30. Bonsoir,

    j’ai suivi ce tuto et je vous tire le chapeau. J’ai rencontré l’erreur …$end à la ligne … et en lisant tout les commentaires j’ai vu qu’il fallait ajouter &lt?php endwhile; ?&gt et &lt?php endif; ?&gt (je le mets pour ceux qui n’auront pas la patiente de tout lire.
    J’exhorte ceux qui ont des soucis à lire tous les commentaires car d’autres ont déjà eu et résolu les problèmes que vous rencontrez.
    J’ai découvert cet article et ce site hier et je sens que je vais rapidement progresser sur WordPress grâce à vous.

    Félicitations encore pour le travail abattu et à bientôt.

  31. Ping : Créer une page « Plan du Site » sur un blog Wordpress | EBOOKS-GAGNANTS

  32. Simple et de bon goût :) et last but not least : sans plugin …

    Je n’ai eu aucune difficulté à mettre en oeuvre ce code :

    1) J’ai renommé le fichier page.php en template-sitemap ; l’avantage, c’est que toutes les classes du site et les appels à fonction et variables spécifiques au thème sont en place.
    2) J’ai rajouté le code juste en fin de la du contenu (càd de la boucle)
    3) Modifié quelques lignes du code pour que le « é » de catégorie s’affiche correctement

    That’s it.

    Merci à Aurélien et à son blog qui fourmille d’astuces intéressantes …

  33. Bonjour,

    petite question au sujet de ce tuto. Pour créer le fichier « sitemap.php », je dois y copier l’intégralité du code présent dans le fichier « page.php » ??

    Merci de votre réponse

  34. Ping : Créer une page « Plan du Site » sur un blog WordPress « ADMIN18 Secrétaire Libérale / Télésecrétaire

  35. Bonjour, l ‘onglet affiche un autre titre que celui que j’ ai nommé..trop bizzard, j’ ai pourtant refait mon sitemap et renommé ma page ‘tous-les-jeux’, mais j ‘ai toujours ce faut titre..vraiment je ne comprend pas. Est ce mon thème?

  36. Bonjour,
    J’ai voulu tenté ce tuto qui me semblait simple, et c’est vrai qu’avoir une page map est super important. Mais j’ai un problème, il n’y a quasiment rien dans ma page page.php. Et du coup, lorsque je publie ma page site map, elle est vide…
    Voilà le code de page.php:

    Je crois qu’en fait c’est le modèle pour une page vs article… pouvez-vous m’aider?!

  37. Une telle page est désormais présente sur WordPress Channel dans le pied de page.

    Bonjour,

    Il me semble que ce n’est plus d’actualité et de plus le lien est rompu (direction 404)

    Thierry

  38. Ping : Créer son propre plan de site Wordpress LABSIDS » LABSIDS

  39. bonjour,

    cette page marche bien sauf que :
    j’ai un menu qui pointe sur des pages… celles-ci sont bien dans le sitemap, sans soucis. mais j’ai aussi des sous-menus ! ( qui sont en fait d’autres pages ) et là ben, ces autres pages ne s’affiche pas du tout dans le sitemap ! une idée ?

  40. OK , merci beaucoup de l’info. en fait j’ai réussi à résoudre le problème autrement : j’ai mis les pages des sous-menus « enfants » des pages du menu… ( c’est peut-être une mauvaise solution, mais ça semble marcher !)

  41. Bonjour,
    j’ai réalisé cette manipulation sans aucun problème, le résultat est très satisfaisant hormis deux points :
    -Les accents n’apparaissent pas, ils sont remplacés par un petit losange marqué d’un « ? », sauriez vous comment y remédier ?
    - Comment faire en sorte que cette page soit reconnaissable en .xml pour les moteurs de recherche ?

    Merci d’avance pour votre réponse, et bravo pour votre site, j’y vient très régulièrement trouver les réponses à toutes mes questions :)

    Bien à vous,
    Tom.C.

  42. Bonjour,
    Merci beaucoup pour ce tutoriel.
    Tout fonctionne parfaitement, sauf que mon plan de site s’insère dans ma barre de menu et non dans mon footer, pouvez vous me dire comment d’une part l’enlever du menu et d’autre part comment le mettre dans le footer ?
    un grand merci
    Delphine

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>