La hiérarchie des templates de WordPress 5.3

Dans WordPress il existe une hiérarchie pour vos templates (ou fichiers modèles si vous préférez) ce qui va permettre à WordPress de savoir comment afficher tel ou tel type de contenu. On parle de hiérarchie car WordPress va regarder si il trouve un template pour le type de contenu à afficher, et si il ne trouve pas il va en chercher un autre un peu plus générique et si il ne trouve toujours pas, il finira par retomber sur index.php qui lui est dans tous les cas obligatoire pour la définition d’un thème.

La hiérarchie des templates de WordPress https://developer.wordpress.org/files/2014/10/Screenshot-2019-01-23-00.20.04.png

Comment lire ce schéma?

Tout simplement commencez à gauche en choisissant le type de contenu à afficher. Suivez ensuite le cheminement et quand vous arrivez sur une case dont le fichier existe vous y êtes 😉.

De manière générale les cases violettes sont les plus fréquemment utilisées (Primary Template), les vertes sont déjà un peu plus spécifiques (Secondary Template), et les oranges sont variables (Variable Template).

Donc en exemples…

Les pages

Pour la page d’accueil du site (Site Front Page) c’est le template front-page.php qui est appelé, à défaut page.php ou home.php suivant que votre site affiche une page ou un blog en accueil.

Le template variable page-$slug.php affichera si il existe la page définie par $slug. Par exemple vous créez une page contact depuis l’administration avec le slug contact, puis un fichier template page-contact.php. Le template se chargera donc de rendre cette page spécifique. Il est également possible de le faire avec l’id de la page page-3.php, mais ne le faite que pour votre propre thème, et non pour un thème destiné à être distribué.

Pour la page des résultats de recherche (Search Result Page) search.php à défaut index.php.

Et si la page n’existe pas (Error 404 Page) ce sera 404.php.

Les archives

Dans WordPress sitôt que vous cliquez sur une catégorie ou une étiquette, vous arrivez dans les archives (Archive Page). Le template est rendu avec le fichier archive.php. Cette page gère aussi l’affichage de la liste des articles du blog.

Il existe aussi les templates plus génériques date.php, category.php, tag.php, author.php, taxonomy.php et archive-$posttype.php$posttype peut prendre les valeurs (par défaut par le cœur de WordPress, d’autres valeurs sont possibles en fonction de vos plugins installés) :

  • post
  • page
  • attachment
  • revision
  • nav_menu_item

Les articles

C’est le fichier single.php qui va cette fois gérer l’affichage lorsque l’internaute aura cliqué sur le titre d’un article (Singular Page > Single Post Page) de votre blog.

Et les body class dans tout ça ?

Ha ben voilà une question quelle est bonne! Et bien tout simplement le nom de votre template se retrouvera dans les class du tag <body>. Par exemple avec le template page.php on aura <body class="... page ..."> et avec archive.php <body class="... archive ...">. Ceci vous permettra de customiser les CSS de chacun des templates.

Installer WordPress en local avec WSL2

Avant de pouvoir commencer à travailler avec WordPress (ou tout autre développement web), il va vous falloir faire tourner un serveur web et un serveur de base de données au minimum.

Avec l’arrivée de WSL2 sur Windows, vous pouvez oublier les paquets comme WAMP ou EasyPHP. On va plutôt mettre en place un vrai serveur qui tournera sous Linux comme votre serveur de production (cela facilitera grandement le développement).

Si vous n’avez pas encore installé WSL2 avec une distribution Linux, vous pouvez vous rendre ici : https://docs.microsoft.com/fr-fr/windows/wsl/wsl2-install pour voir comment faire.

Ouvrez votre bash (moi j’utilise Ubuntu-18.04 avec Windows Terminal) et tapez:

sudo apt update && sudo apt upgrade
sudo apt install apache2 mysql-server-5.7 mysql-client-5.7 php7.3
sudo apt install phpmyadmin

Suivez les étapes d’installation et rendez-vous ensuite dans votre navigateur préféré et ouvrez la page http://localhost. Vous devriez voir la page d’accueil d’Apache par défaut, bravo!

Nous allons maintenant créer une hôte virtuel pour accueillir notre site WordPress:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/wordpress.conf
sudo mkdir /var/www/wordpress
sudo vim /etc/apache2/sites-available/wordpress.conf

Modifiez ensuite le fichier /etc/apache2/sites-available/wordpress.conf:

<VirtualHost *:80>
ServerName wordpress.localhost
DocumentRoot /var/www/wordpress
<Directory /var/www/wordpress/>
Options +Indexes +Includes +FollowSymLinks +Multiviews
AllowOverride All
</Directory>
</VirtualHost>

Activez le site et redémarrez Apache:

sudo a2ensite wordpress && sudo service apache2 restart

Modifiez le ficher C:\Windows\System32\drivers\etc\hosts (moi j’utilise Hosts file editor c’est plus pratique) et ajoutez la ligne

127.0.0.1  wordpress.localhost

Voilà maintenant on va pouvoir télécharger WordPress et l’installer…

cd /var/www
wget https://wordpress.org/latest.zip
unzip latest.zip
rm latest.zip

Accédez ensuite à http://wordpress.localhost et laissez-vous guider c’est assez simple et intuitif… Vous aurez toutefois besoin d’avoir créé une base de données à l’aide de http://localhost/phpmyadmin au préalable.

L’accès à localhost n’est possible qu’une fois sur deux avec WSL2

Il arrive que WSL2 ne soit atteignable qu’avec l’adresse IP de la machine virtuelle plutôt qu’avec localhost. Ceci est relativement embêtant d’autant plus que l’adresse IP de WSL2 change après chaque redémarrage.

Afin d’y remédier, il est nécessaire de désactiver l’option de démarrage rapide de Windows. Vous la trouverez ici :

Panneau de configuration > Système et sécurité > Options d'alimentation > Choisir l'action des boutons d'alimentations

Cliquez sur “Modifier les paramètres actuellement non disponibles” et décochez ensuite l’option “Activer le démarrage rapide (recommandé).

Enregistrer les modifications et le problème devrait être résolu…

C’est parti…

Voilà c’est reparti, je relance le site SKWeb après plusieurs années de silence… et on repart de zéro!

SKWeb est un domaine que j’ai réservé et exploité depuis 2010 (un simple whois vous permettra de le vérifier). Depuis j’ai acquis pas mal d’expériences dans plusieurs domaines. 

J’essaierai donc régulièrement de publier un article dont le sujet portera essentiellement sur :

  • WordPress
  • Magento 2
  • Windows Subsystem for Linux 2
  • NAS Synology
  • PHP & mySQL

Une des prochaines étapes sera aussi de réaliser un thème complet perso pour le site, je vous en ferez profiter en rédigeant des articles au fur et à mesure.

Donc c’est parti et à bientôt…