Ricochets-Développement, une passion à votre service

Web Agency, Publicité, Maintenance Système : une palette pour réussir vos projets
Le blog

WordPress ou comment afficher une page contenant les posts d’une catégorie

Contexte

Pour la création d’un wordpress, l’auteur voulait avoir 2 blogs distincts sur deux pages différentes : une home page avec une vue des articles sur une catégorie spécifique et une page interne sous forme de blog avec une autre catégorie bien précise !

La plupart des thèmes bien fait sont déjà pourvu de ce genre de fonctionnalité dans leur construction. En effet il suffit globalement d’ouvrir une nouvelle page et de choisir son modèle.

Simple mais lorsque le thème ne propose pas ce genre de procédé, il faut le faire nous même et c’est le but de ce tutoriel très simple mais un peu technique. Basiquement, vous aurez besoin d’un client FTP et d’un accès à votre base de données. Pour la plupart des hébergeurs, l’accès phpMyAdmin est directement alloué et suffit pour ce dont nous avons besoin de faire. Pour la connexion FTP, tout client comme FileZilla arrive très bien à s’en sortir 😉

Méthode

La technique que je vais proposer est celle qu’utilise beaucoup de thèmes que l’on trouve chez ThemeForest par exemple. Elle n’est pas révolutionnaire mais fonctionne parfaitement !

La technique consiste à filtrer le contenu d’une page sur une catégorie et sur la page d’accueil de supprimer cette catégorie.

Je suppose que vous avez déjà fait une liste de catégories disponibles sur votre interface WordPress. Pour faciliter l’écriture, je vais prendre mon exemple de création d’un modèle basé sur la catégorie « Musique« .

S’informer sur la base de données

Maintenant que nous savons la catégorie à isoler, il me faut trouver son identifiant. Cela peut paraître déroutant mais l’identifiant est un numéro unique dans la base de données qui permet au programmeur de parler de sa cible.

Sur votre interface de base de données, exécuter cette requête pour lister l’ensemble des catégories

mysql> select * from wp_terms;    
+---------+-------------+------------+------------+
| term_id | name        | slug       | term_group |
+---------+-------------+------------+------------+
|       1 | Non classé  | non-classe |          0 |
|       2 | Jeux        | jeux       |          0 |
|       3 | Le blog     | le-blog    |          0 |
|       4 | Autres      | autres     |          0 |
|       5 | Musique     | musique    |          0 |
+---------+-------------+------------+------------+
5 rows in set (0.00 sec)

Ici j’utilise la table wp_terms mais il faudra changer le préfixe si vous l’avez déclaré autrement.

Notez à partir d’ici les numéros identifiants de la ou les catégories visées. Pour mon exemple, Musique, je note l’identifiant 5.

Travail sur la page d’accueil

Je vais m’occuper de la page d’accueil donc le fichier index.php qui se trouve à la racine de mon thème. Ouvrez votre logiciel FTP puis accédez à ce fichier qui se trouve dans /wp-content/themes/[MONTHEME]/. Téléchargez-le ou éditez-le directement en ligne.

Dans le fichier index.php, il faut se placer au début de la boucle d’affichage des articles juste avant la ligne commençant par :

if (have_posts()):

et il faut ajouter simplement la ligne suivante:

<?php query_posts($query_string . '&cat=-5'); ?>

Cette ligne, où les tags <?php et  ?> ne sont à ajouter qu’en dehors du code PHP, signifie : ne pas afficher les posts de la catégorie 5. Si vous souhaitez exclure plus de catégorie, il faudra les séparer par une virgule.

A partir de ce moment, votre accueil n’affiche plus les articles de la catégorie Musique.

Un nouveau modèle

Liste des attributs d'une page

Liste des attributs d’une page

Pour faire apparaître notre nouveau blog musical sur une page spécifique, il me faut créer un modèle. Pour aller rapidement et conserver le design de ma page d’accueil, je vais dupliquer index.php et renommer le nouveau fichier en musique.php. Pour qu’il soit compréhensible par l’interface de WordPress dans l’édition des pages, il faut ajouter ce tag au tout début du fichier

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

Ainsi dans votre interface au niveau des attributs des pages, vous devriez d’ors et déjà obtenir le modèle à sélectionner.

Sur certains thèmes, il y a dans le fichier provenant de la page d’accueil une gestion d’erreurs s’il n’y a pas de posts. L’idée est d’enlever la condition complète avec son else et son endif.

<?php if(have_posts()) : ?>
	<!-- affichage des contenus et des posts -->
<?php else : ?>
	<!-- contenu lorsqu'il n'y a pas de contenu -->
<?php endif; ?>

Cela dit, ce n’est pas essentiel et vous pouvez conserver la stratégie du webdesigner afin de gérer les cas où aucun post n’est disponible.

Je veux maintenant afficher que la catégorie Musique dans mon modèle. Dans le fichier musique.php, il faut simplement ajouter cette dénomination

<?php
	$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
	query_posts("category_name=musique&paged=$paged");
?>

// Avant l'instruction :
<?php while(have_posts()): ?>

Si votre catégorie s’appelle Mes-Jeux, il faudra remplacer la variable category_name.

En cas d’erreur sur la page ou plus ennuyeux une page blanche, c’est que votre WordPress est assez ancien ou qu’il existe une configuration particulière du thème. Pour cela il faudra ajouter en début de fichier musique.php les instructions suivantes :

<?php
	define('WP_USE_THEMES', false);
	require('./wp-load.php');
?>

Pour finir

Le travail est terminé : créez une page et choisissez le modèle dans les attributs de la page. Vous avez maintenant une page avec la liste des articles d’une seule catégorie

Une autre astuce permet d’afficher du contenu dans la page que vous venez de créer. En effet il peut s’avérer utile d’ajouter un préambule ou une quelconque information. Pour cela dans votre fichier musique.php il faut ajouter ces instructions à l’endroit où vous le jugez le plus pertinent

<?php
	// Récupération et affichage du contenu de la page en dehors du blog catégorie
	the_post(); 
	the_content();
?>

Conclusion

Ce rapide tutoriel sur WordPress est le moment idéal pour se plonger un peu plus loin et sans plugin dans des détails qui n’ont l’air de rien mais change votre site internet de manière plus dynamique.

Naturellement, cette méthode est utile pour des thèmes qui ne gère pas ce genre de fonctionnalités. Sur le thèmes pro, vous trouvez facilement des modèles différents qui vous faciliterons la vie.

email

One comment

  1. l'inconnu
    février 13th, 2014 17:07  /  Reply

    Merci pour l’astuce !!!

Leave a Reply

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

Time limit is exhausted. Please reload the CAPTCHA.

Our clients

© 2013 - 2017 Mickael Badet – Ricochets Développement . Tous droits réservés - Mentions légales
 
Background
Color scheme