Template Hierarchy

Comme expliqué précédemment, un theme ne peut fonctionner sans index.php.

Cela est du au fonctionnement de la hiérarchie des templates dans WordPress.

Concrètement, le fichier index.php sera toujours utilisé en dernier recours par WordPress pour afficher les pages de votre site si il n’a trouvé aucun autre template pour le faire.

Prenons un exemple concret :

Si vous consultez un article WordPress, voici ce que WordPress va faire :

Suivons son raisonnement sur le schema ci-dessous de gauche à droite.

Tout d’abord il va voir qu’il s’agit dune « Publication seule » puis il va voir qu’il s’agit d’une « Publication seule » (un article) et non d’une Page statique (page) puis il va voir qu’il s’agit d’un « Article natif« .

Ensuite il va regarder si un template du type $custom.php a été spécifié pour l’affichage de cet article, si c’est le cas il va l’utiliser pour afficher notre article, sinon, il continu son raisonnement.

Ensuite il va regarder si un fichier single-post.php existe dans notre thème (single-post.php sert uniquement à l’affichage des articles (Post Type Post)). Si ce fichier existe il va l’utiliser pour afficher notre article, sinon il continu.

Ensuite il va regarder si un fichier single.php existe dans notre thème (single.php sert à afficher les articles (Post Type Post), les Custom Post Type et les attachments). Si ce fichier existe il va l’utiliser pour afficher notre article, sinon il continu.

Ensuite il va regarder si un fichier singular.php existe dans notre thème (singular.php sert à afficher indifféremment tous les articles et les pages du site). Si ce fichier existe il va l’utiliser pour afficher notre article, sinon il continu.

Enfin, si il n’a toujours rien trouvé, il utilisera par default le fichier index.php pour l’affichage de notre article WordPress.

Ainsi on comprend l’importance de la hiérarchie des templates dans WordPress et pourquoi le fichier index.php est indispensable au bon fonctionnement de WordPress.

Aussi on constate que WordPress part toujours du modèle le plus spécifique possible pour aller vers le modèle le plus généraliste (index.php).

Pour aller plus loin, je vous invite à consulter l’article de reference sur la hiérarchie des templates :

https://developer.wordpress.org/themes/basics/template-hierarchy/

Et son equivalent en français :

https://fr.wordpress.org/support/article/hierarchie-des-fichiers-modeles/