- Avant de démarrer
- L’installation
- Problèmes à l’installation
- Les premiers pas
- Un peu de structure, articles, pages et catégories
Une des questions qui revient le plus souvent sur le forum wordpress, et qui m’énerve un peu, c’est
je voudrais faire une page avec tous les articles de telle catégorie
Or la « page » est déjà là, mais ce n’est pas une page.
Il faut connaître un peu la structure de base de wordpress, même si on n’est pas informaticien, cela aide un peu à comprendre.
La publication, le « post » est un article ou une page
On ne parle pas de page internet, c’est déjà cela qu’il faut comprendre. Une page internet, c’est ce qui s’affiche en une seule fois quand on entre une url dans son navigateur.
Dans le cas de wordpress, cette « page » va être en fait le résultat du traitement des informations dans la base de données, des instructions php et de la mise en forme du thème (Pour plus de détails, le premier article de cette série « Avant de commencer« )
Donc il va falloir regarder dans la base de données, pour comprendre ce qu’est, au sens WordPress, une page, un article, une catégorie, un tag, et les « pages » qui permettent d’afficher les articles d’une catégorie ou d’un tag (et qui sont en réalité, au sens de WordPress, des archives
L’élément de base, c’est la publication. Les articles et les pages se trouvent tous les deux dans la table wp-posts, qui contient tout ce qui est publié, donc tout le contenu du site (en dehors des commentaires).
La différence entre un article et une page, c’est donc ce qu’on peut en faire. Dans la toute première version de WordPress, les pages n’existaient pas. Seuls des articles, qui avaient une date, une ou plusieurs catégories, et qui étaient listés sur la page d’accueil (page au sens internet), normalement du plus récent au plus ancien.
Aussi quand on voulait faire un article pour se présenter, donner ses informations de contact, par exemple, ou présenter les produits que l’on vend (comme je le fais), celui-ci allait obligatoirement peu à peu disparaître dans les profondeurs du blog. Il fallait donc une sorte de publication qui était en dehors du « cycle chronologique », et WordPress a proposé des pages.
Simplement, ces pages, qui devaient donner une information statique, ne peuvent pas être affectées à des catégories ou à des tags (il existe maintenant des plugins qui permettent de le faire, mais je n’en vois pas l’intérêt), et n’étaient pas incluses dans les résultats de recherche, jusqu’à une version récente de WordPress.
En gros, comme elles ne disparaissaient pas dans les archives du blog, il n’y avait pas besoin de les rechercher. Plus simple, moins de fonctionnalités.
Le seul « plus », c’est la relative facilité de faire des présentations différentes par page, avec les templates de pages. Mais en fait, cet avantage n’en est pas un, car il existe pour tous les autres éléments de la base.
Catégories ou tags
Là aussi les tags sont venus après les catégories.
Pour simplifier, les catégories sont des éléments qu’on peut facilement organiser en hiérarchies, alors que les tags sont plutôt les mots clés attachés à un article, sans hiérarchie.
Les catégories sont un élément important de WordPress, elles ont en standard un menu pour elles, un article a obligatoirement au moins une catégorie, alors qu’il peut ne pas avoir de tags. On peut leur attacher une description. (Au tag aussi, mais pas en standard, disons que la structure existe dans la base de données, mais pas l’interface dans l’administration).
Deux éléments qui permettent de catégoriser les articles, qui sont des « termes ». Il vaut mieux réfléchir au départ de son blog, à la façon de les utiliser qui soit la plus riche possible, sans être redondante.
Voir tous les articles d’une catégorie
C’est une fonction de base WordPress.
Quand on clique sur le lien d’une catégorie (ou d’un tag), on arrive sur une page souvent semblable à l’accueil, dans sa présentation (une liste d’articles, souvent avec le résumé du contenu, classé par ordre décroissant), mais appartenant à la catégorie que l’on demande, et, en standard dans WordPress, aux sous-catégories (Si dans un blog de cuisine, le clafoutis est classé dans les desserts aux fruits, sous catégorie des desserts, il apparaitra aussi quand on demande « les desserts »).
L’affichage est généré par un fichier particulier du thème, qui s’appelle category.php
Donc, normalement, toutes les catégories s’affichent de la même façon.
Différencier la présentation pour une catégorie
C’est d’ailleurs la principale raison de la demande « je veux faire une page pour mes catégories ».
Eh bien non….
Mettons que vous ayiez un blog de cuisine, et que vous souhaitiez afficher la catégorie « faire son marché » différemment des autres catégories, qui elles concernent les recettes.
Il suffit de créer un autre fichier dans le thème, appelé category-xx.php avec l’id de la catégorie à la place de xx et le tour est joué.
Avec la version 2.9 il est aussi possible d’appeler le fichier category-slug.php ce qui rend la maintenance du thème nettement plus lisible
Afficher l’url avec seulement la catégorie, sans la hiérarchie
C’est aussi une demande, et très valide, en terme de SEO, cela permet de raccourcir des urls qui sinon peuvent être un peu longues.
Pour cela, j’ai trouvé un plugin que je vais utiliser sur la prochaine version du blog d’une agence de voyage à Ouarzazate, c’est Single Category Permalink.
L’avantage de rester avec les catégories au lieu de faire une page ?
Il est énorme. Au point de vue développement, et au point de vue SEO.
Une maintenant plus facile
Au lieu de refaire un template de page quasi complet, et notamment de refaire une requête pour appeler les articles que vous voulez voir, vous utilisez toutes les fonctions de base de WordPress.
Donc celles qui sont mises à jour quand le modèle de données change (comme avec la version 2.5 qui avait profondément changé la structure de la base pour les tags et les catégories).
Eviter le duplicate content
Le deuxième avantage, c’est que faire une page pour afficher une catégorie donnée ne « shunte » pas le mécanisme de base de Wordpress. Vous allez donc avoir dans toutes vos listes de catégories (sidebar, liste en bas du post), un lien vers la « page de catégorie » WordPress, celle qui est générée par le template category.php et dont le contenu sera étrangement similaire à celui de votre page.
Et duplicate content is bad !
Les cas tordus
Il y en a toujours bien sûr.
Mettre une catégorie dans le menu des pages
« A priori » cela veut dire que quelque chose a été mal pensé dans la structure du site, mais pas toujours.
Ainsi, les portfolios que je souhaite montrer seraient plutôt des articles, alors que mon menu est constitué de pages.
Et puis un site évolue, les besoins peuvent se modifier.
Plusieurs solutions, pas toutes super…
- la pire de toutes, saisir son menu en dur
- Là, ça veut tout simplement dire que vous devrez modifier votre menu à chaque fois que vous voudrez faire une nouvelle page. On oublie.
- Pousser les fonctions WordPress à fond
- Les paramètres d’inclusion et d’exclusion que l’on peut mettre dans les fonctions wp_list_pages() et wp_list_categories() peuvent permettre de rajouter une catégorie au milieu des pages, mais il faut être honnête, c’est lourd.
- Faire une page
- Oui, mais… avec une solution miracle, la redirection php. En gros, votre page n’aura qu’une seule fonction, exister en tant que page et renvoyer vers la « page de catégorie ». On retrouve la notion de menu, ou de node, qu’on trouve dans les CMS moins orientés blog, comme Joomla ou Drupal. L’avantage est que vous avez le meilleur des deux
Avoir besoin de présenter sur une seule page deux catégories différentes et indépendantes
Là effectivement, pas de solution standard, il faut faire une page.
Mais de la même façon que dans le cas précédent on redirige la « page » vers la « catégorie », il ne faudra pas oublier de rediriger les deux « catégories » vers la « page ».
Ce qui permet d’éviter le duplicate content…
Les redirections
Plusieurs solutions sont possibles, et il existe des plugins pour cela.
Je préfère me baser sur le bon vieux code php, et faire simplement un template spécifique pour la page, avec simplement ce code :
header('Status: 301 Moved Permanently', false, 301);
header('Location: /adresse de la page/');
(à mettre bien sûr entre les balises php). L’adresse de la page doit être absolue, c’est à dire par rapport à la racine de votre site (et pas obligatoirement de votre blog).
Pour la redirection des catégories, c’est un peu plus complexe, car le plus souvent, le template de category commence après l’ouverture de la balise body. Il faudra donc dans le fichier header.php inclure un test (is_category(‘xx’)) qui génère tout de suite la redirection.
C’est la solution la plus propre quand on est réellement obligé de faire une page pour afficher les articles d’une catégorie.


















Bonjour et tout d’abord merci pour cet article.
Tu écris « En gros, votre page n’aura qu’une seule fonction, exister en tant que page et renvoyer vers la « page de catégorie ». » donc la page n’est qu’une adresse redirigeant sur la page de catégorie. Le sens page vers catégorie est préféré au sens inverse catégory vers page, puisque comme tu le dis la catégorie sera proposée dans les menus dynamiques.
Mais ensuite tu écris : « Mais de la même façon que dans le cas précédent on redirige la « page » vers la « catégorie » » jusque là ok, on est bien dans le sens page vers catégorie, mais tu ajoutes « il ne faudra pas oublier de rediriger les deux « catégories » vers la « page ». » mais là c’est le sens inverse, catégorie vers page… Je ne comprends pas.
ça devrait être l’inverse : « il faudrait rediriger la page vers les deux catégories ». Non ?