 Merci beaucoup. Merci à vous. Merci à vous d'être là. Je m'appelle Vincent Dibbrek, je suis frilance développeur WordPress et aujourd'hui on va parler des thèmes WordPress et on va ensemble créer un thème WordPress à partir d'un modèle statique. Il y a deux trucs sur lesquels je voudrais insister avant de démarrer. Le thème WordPress qu'on va créer est vraiment un thème ultra simple. L'objectif c'est d'apprendre à créer votre premier thème WordPress. C'est vraiment votre premier thème, ce sera un thème ultra simple. Rien de foufou au niveau du design, ni au niveau du code. L'objectif, c'est vraiment de voir les mécaniques d'un thème WordPress. On va partir d'un modèle HTML CSS, tout simplement parce qu'on n'aurait pu partir de rien du tout. C'est-à-dire qu'on a un install de WordPress Vierge, on crée un dossier vide égo. On pourrait très bien faire ça, mais le problème c'est que si on fait ça, on va commencer à faire de l'HTML du PHP, du CSS, du JS en même temps, on ne va plus se retrouver du tout. Alors que là l'avantage, si on part d'un template HTML CSS, on fait notre design, on fait notre site de la façon dont on veut qu'il ressemble et ensuite on a juste à s'occuper. Donc l'HTML et CSS c'est déjà fait. On a juste à s'occuper du PHP et de passer sous WordPress, d'en faire un thème WordPress. Donc on gagne pas mal de temps en faisant ça en fait. Donc pour suivre il nous faut une installation locale, donc moi j'utilise local backflying wheel, on peut prendre autre chose, même il y a plein d'outils différents. Un éditeur de code, donc moi j'utilise VS Code, pareil, des édites dans le code, n'importe quel pourrait faire l'affaire. Et les petits fichiers de démarrage qui sont sur le GitHub. Donc vous pouvez aller sur le GitHub, GitHub.com slash vins du break, sur l'orthographe de mon nom c'est OEU, c'est Q. Et vous avez WordCamp Paris 2018 et là dedans vous avez un petit GitHub et dessus il y a un petit repo, pardon, il y a plusieurs trucs. Il y a un petit PDF qui va récapituler tout le process que je vais vous montrer. Donc ça c'est bien, comme ça vous rentrez chez vous, vous avez le petit PDF qui récapitule tout. Ici il y a un tout petit plugin qui ajoute un custom post type, un type de contenu personnalisé et deux taxos et un custom field. Donc on a un tout petit plugin. Si on a le temps on fera les templates de custom post type. Ici on a le prototype, donc c'est ça qu'on va transformer en thème ou en presse. Et ici on a un petit XML de contenu, c'est pareil, c'est juste un tout petit peu de contenu pour alimenter les différents templates. Et après là on a le thème, alors j'ai écrit le thème et je ne mets en fait jamais fini un thème. Donc on a le thème dans une version un peu plus avancée, comme ça tout ce qu'on n'aura pas le temps de voir là, vous aurez le code commenté, le code est bien commenté, vous aurez tout le code commenté avec plus de fonctionnalité, plus de template, etc. Voilà vous avez toute l'explication ici de ce que j'aime bien. Alors juste si vous téléchargez les fichiers, vous activez le petit plugin d'abord, comme ça ça crée le CPT, ça crée les taxonomies personnalisées et après vous utilisez l'XML d'un port et puis comme ça ça importe aussi tout contenu qui va danser CPT. Le template, donc je fais un truc ultra basique, des images de jeux vidéo, donc vraiment un truc hyper simple, on part d'une navigation toute simple, donc avec le logo à gauche, le menu à droite, une petite tentette ici avec juste le tisque et après le contenu à gauche, la size barre à droite. Il n'y a vraiment aucune surprise, c'est vraiment du ultra basique et puis en bas un petit footer avec un petit message, voilà pas super important. Donc vraiment du ultra classique. Je répète l'objectif, c'est vraiment de voir les mécanismes de base du développement de thèmes ou après. Donc ça c'est pour la page d'accueil, c'est pour la page d'accueil du blog en fait, donc on a les articles qui apparaissent comme ça. Ici si on prend un article simple, donc on a l'image qui apparaît en plus grand et puis on a le texte qui apparaît ici, on a toujours la size barre sur la droite, on a juste l'image à la ligne qui remonte tout en haut et le titre ici on a les méta. Sur la page simple c'est pareil sauf qu'il n'y a pas de size barre, donc il n'y a pas de barre latéral, donc il n'y a rien de compliqué là-dedans. Sur les jeux, donc ça c'est le petit CPT, donc j'ai mis des petits jeux vidéo que je jouais quand j'étais jeune et donc voilà. Donc en fait je n'appuie sur rien du tout à part le titre, à part une image, le titre d'accord et c'est ce forme de grille comme ça. Donc ça j'espère qu'on aura le temps de le faire, on verra. Et quand on clique sur un jeu simple, on a le gros screenshot à gauche et ce coup-ci on a la description, on a le contenu dans la size barre, c'est tout. Et le titre, l'entête du titre reste grosso modo pareil que pour les articles simples. Donc voilà, quelque chose de vraiment ultra basique. Alors donc dans mon install de WordPress, donc là voilà, j'ai juste un petit peu de contenu, quelques articles là, les articles qui apparaissent dans le prototype, quelques médias, une ou deux pages, voilà, il y a juste un tout petit peu de contenu. Quand on va dans le thème, bon j'ai mis le thème fini, parce que je vais aller peut-être copier, copier-coller deux, trois trucs pour gagner un peu de temps, et dans les plugins il n'y a rien du tout. Tout est désactivé. Donc le plugin activé, ce sera celui-là pour faire les templates de custom post-hype, le type de contenu personnalisé qu'on verra après. Voilà. Donc c'est bon, donc on peut commencer. Donc dans l'éditeur de code, j'ai ouvert tout mon dossier thème, et donc la première étape c'est de faire apparaître le thème dans la ligne de WordPress. Donc on va créer un dossier, donc moi j'ai appelé mon thème select, donc je crée un dossier select, et dedans je crée les deux fichiers qui sont requis pour que le thème soit reconnu dans la ligne de WordPress. Donc le premier c'est index PHP, et le deuxième c'est star.com. Donc ça c'est les deux fichiers qui sont requis pour qu'un thème apparaissent dans la ligne de WordPress. Dans en fait WordPress, quand vous allez sur la page des thèmes, il scanne le dossier des thèmes et il cherche les fichiers style.css et il cherche surtout une entête de commentaire. Et dans cette entête, s'il y a des infos comme ça, il détecte qu'il y a un thème, et automatiquement il va l'afficher dans l'administration. Style.css est index. Et dans index on va juste mettre un truc un peu bidon pour vérifier que ça marche. Alors je retourne, donc là j'ai, ah oui je n'ai pas expliqué pourquoi index.php c'est le, il est requis, c'est simplement parce que c'est le template par défaut de WordPress. C'est à dire que en fait WordPress, quand on lui demande d'afficher une certaine page, il va chercher dans tous les templates disponibles dans le thème. Il va regarder est-ce qu'il y a un template suffisamment spécifique pour cette page. Mais s'il ne trouve pas, dans les derniers recours, son dernier recours c'est toujours d'aller chercher index.php. Donc toujours il faut absolument qu'il se template dans ce modèle de page dans les fichiers du thème. Donc normalement si j'ai pas fait de faute sur l'entête, ça devrait marcher. Donc du coup je retourne sur mon install, je vais rafraîcher la page. Et voilà, vous voyez là j'ai mon thème. Ok ? Donc mon thème il apparaît dans l'anime. Quand je clique sur les détails, j'ai rien parce que j'ai juste mis le nom du thème. Et après on peut rajouter des détails dans le fichier style.css. On peut rajouter l'url de l'auteur, la version, etc. On va le faire après. Excuse-moi. En fait un thème c'est style, tu l'auras liste ou à la racine de... Ouais attends regarde, je te montre. Ça c'est mon dossier de thème. Alors attends, je te montre, je te montre plus l'arboraisance. Donc style, WS, c'est pas rien. Regarde, app, public. Donc vp content, c'est vrai que je n'ai pas montré ça, je suis désolé. Vp content, d'accord, ça c'est l'installation WordPress. Ok ? Vp content, et on va dans themes. Et dans themes, tu crées ton dossier ? Ouais voilà, tu crées ton dossier et boum, index et style. Ah oui, alors. Les questions, je préfère les prendre ou faire à mesure en fait. D'accord ? N'hésitez pas, si je fais un peu vite ou que j'oublie d'expliquer un truc, qu'il y a un doute, vous levez la main, vous me criez et je prends les questions ou faire à mesure, ce sera quand même beaucoup plus simple que de prendre toutes les questions en bloc à la fin. Ah, tu te souviens, pour le premier template, tu as fait ça ? Non pas non, je ne souviens plus. Faut revenir. Donc, n'hésitez pas à m'interrompre, vas-y. Donc dans le cas, il doit être fait. Oui, c'est bon déjà, c'est dans... Alors attends, dans le local, ici, regarde, attends, il est où le raccourci ? Là ? Oui, voilà. Je l'ai piné, une fois je l'ai piné, donc du coup... Oui, voilà, il est là, oui. D'accord ? Et donc par contre, c'est dans app public. Et là, t'as ton install de loin après. Ok ? Donc le thème est dans la ligne, il n'y a rien. On va l'activer. Donc là, on va visiter le site et ça pète parce qu'on a en fait, on n'a qu'un seul template. Donc automatiquement, il ne va pas chercher ce template et qu'est-ce qu'il y a dans ce template ? Et bien, il y a un halo codé en dur. D'accord ? Donc là où on en est, pour l'instant. Donc ce qu'on va faire, c'est qu'on va commencer à importer tout ce qu'on a fait dans notre prototype. Donc dans notre prototype, alors je vais faire un petit truc là, mon prototype, je vais le prendre ici. Donc ça, c'est le zip qui vient de GitHub. Excuse-moi, on n'arrive pas à trouver GitHub, c'est pas mon numérique. Je l'ai tweeté. Je l'ai tweeté, merci. Regarde, c'est ça. C'est pas en face. Binks du break. Donc des UBR, O, E, U, C, Q. O, U, C. Je sais, c'est chiant. C'est bon ? Oui, donc je disais, je vais faire un truc pour que ce soit plus simple. Je vais aller dans mon dossier de GitHub, je vais aller prendre le prototype, je le copie et Binks, je vais aller le mettre dans mon thème, dans mon dossier thème. Donc le thème, select et boum, je le claque là. C'est un peu sale car ça a un collant de verre. Je fais ça parce que comme ça, je peux facilement manipuler après. Donc du coup, je l'ai ici mon prototype. Ce que je vais faire, c'est que je vais prendre tout mon contenu de index, je vais faire un gros copier-coller, boum, et je le mets dans index.php. Là, j'ai juste pris tout le contenu qu'on a en dur. Voilà, tout l'HTML, je l'ai pris, boum, je l'ai mis dans index, d'accord ? Et je vais faire pareil pour le CSS. Pour le CSS, je vais tricher un petit peu, je vais aller prendre la feuille de style dans le template fini, je vais vous expliquer pourquoi. Donc ça, c'est la feuille de style du template fini, je copie et je mets dans mon feuille de style ici et je colle. Alors pourquoi j'ai fait ça ? Parce que comme ça, vous voyez, on a une en tête finie et vous ne me regardez pas pendant 10 minutes tapé des informations sur une en tête. Donc voilà, je vais renommé le thème du coup. Donc c'est à l'in, on peut mettre le nom de l'auteur, l'URL de l'auteur, une description, un numéro de version, la licence, l'URL de la licence. Alors le text domain, ça c'est important. Le text domain, c'est une sorte de mot-clé qui est associée à toutes vos chaînes de caractère que vous rendez traduitibles dans votre thème. D'accord ? On va en parler un petit peu, on va en parler un peu après, quand on tapera la première chaîne de caractère dans le template. Et le domain path, c'est où est-ce que vous allez stocker vos fichiers de traduction ? D'accord ? Donc on va créer, on ne va pas le faire ensemble. Vous verrez sur le thème fini, mais sur le thème fini, il y a un dossier Languages et dedans, il y a les PO, les fichiers de traduction en fait, en anglais et en français. On ne va pas passer en revue de la feuille de style, d'accord ? Là, l'idée, c'est juste de voir, on peut mettre plus d'info dans le blog de commentaires de départ. On peut mettre des tags aussi. Les tags, c'est les mots-clés qui sont utilisés pour que sur le repos de WordPress, le thème soit trouvé. Vous allez mettre par exemple le tag 1column. Et quand vous allez sur le repos, vous cherchez un thème à une colonne, votre thème va ressortir. Vous voyez ? C'est les mots-clés de recherche en fait. Donc là, je n'en ai pas mis. Si on a 5 minutes à perdre, on peut aller voir tous les tags qui sont acceptés sur WordPress sur le repos et puis on pourra mettre les tags. Donc voilà pour style 26SS. Donc là, j'ai un gros index avec du contenu HTML codé en dur. Donc si je reviens sur mon site, je rafraîchis la page, c'est bim. Et là, j'ai tout mon contenu codé en dur. Par contre, j'ai aucun style. J'en ai aucun. Alors pourquoi ? Simplement parce que quand on regarde le template, ma souris ne veut pas se rouler avec la roulette, c'est cool. Quand on regarde le template, ici on a une balise link qui est censée aller chercher la feuille de style. Le problème, c'est qu'elle va aller chercher à la racine. Mais on n'est pas du tout à la racine. Notre feuille de style, elle est où ? Elle est dans VP Content, Teams, Select. Donc elle est hyper loin. Elle est carment pas là, notre feuille de style. Donc il ne risque pas de la trouver. Là, on a une URL de Google Font, donc elle, elle passe. Il va chercher la Google Font comme il faut. Le problème, c'est que c'est notre feuille de style qui déclare les polices. Donc du coup, il ne peut pas nous l'afficher correctement. D'accord ? Et ici, pareil pour le JavaScript, je vais chercher un cliché qui n'existe pas. Tout simplement. Il n'y a aucun dossier à la racine de votre WordPress. JS slash navigation. Il n'y en a pas. Donc il faut aller chercher dans le thème. Alors avant de faire ça, on ne va pas laisser un template index comme ça où tout est codé en due. Enfin, tout est codé en due, on va le faire, mais on va régler ce problème au fur et à mesure. Et on va découper ce fichier. Parce que quand on garde bien, quand on revient sur le proto, quand on garde bien, il y a beaucoup d'éléments qui se répètent dans le thème. Il y a toute la navigation. Elle est sur toutes les pages. Il y a le titre ici. Le titre qui change au final. Tout le balisage, il reste pareil. Le balisage du contenu, il change. Mais ici, il y a aussi le balisage du footer. Il change de page en page. Ce qu'on va faire, c'est que, par rapport à notre template index qui est énorme, on va extraire le header, on va extraire la size bar et on va extraire le footer. Et on va les mettre chacun dans l'autre petit fichier qu'on pourra ensuite appeler. Parce que si on recopie le code de la navigation sur notre navigation, on y fait tout mon template. Au maximum, c'est ça qu'il faut faire. Il faut essayer de rendre notre code plus modulaire. Donc là, on y va. Je vais prendre toute ma bar de navigation. Je vais prendre ma section titre qui est là. Là, on n'a pas pas sa revue de HTML. On va faire ça vite fait. Là, on a notre balis body qui sourd. Ici, on a notre provider le logo, un bouton pour ouvrir la ferme et le menu quand on est sur mobile. Une URL pour le menu. Ici, on a notre section de titres. Donc on va prendre tout ça. Et on va même prendre la première balise qui ouvre le contenu. Parce que de toute façon, c'est la même sur toutes les pages. Je fais ça. Je coupe et je crée un fichier. Je crée un fichier ici dans sénac que je ne trouve pas. Je crée un fichier que je vais appeler header. Et dans ce header, boom. Je colle encore en durant. Voilà. Donc là, on a notre provider. Je sauvegarde. Je vais faire pareil pour la sidebar. La barre latérale, pardon. Moi, je fais beaucoup de termes anglophones. La barre latérale, pardon. Elle est là. Elle est ici. Donc je la prends. Je vais créer un fichier pareil dans sénac. Je vais créer un fichier que je vais appeler sidebar. Donc ça, c'est les conventions. Il faut que vous fichiez ça comme ça. Je vais coller le truc. Le header, c'est bon. C'est bon. Le header, c'est bon. Le sidebar, c'est bon. Et je vais aller prendre mon footer, pareil, qui est tout petit, qui est ridicule. Et je vais aller jusqu'en bas de la page. Hop. J'enlève. Attendez. Ça, c'est la balise div. Je ferme le contenu. On va la prendre aussi. Je coupe. Je crée un fichier footer. Point PHP. Notre zone de contenu principale. C'est assez grand vous l'avez déjà dans lui. Ça va? Ça, c'est le footer. Donc en fait, le footer, j'ai pris la balise div qui ferme le contenu. Dans le header, j'avais mis la balise qui est où? Là, je prends la balise div qui ferme le contenu et je prends le footer et les scripts et la balise body HTML. Je ferme tout. Le footer, il ferme tout. Voilà. Donc quand on garde maintenant notre fichier index, qu'est-ce qu'on a? C'est notre contenu et c'est tout. Notre header, il est exprès. Notre footer, il est exprès. Par contre, il faut les appeler les fichiers. Comment est-ce qu'on les appelle? Il y a une question? Oui? Non, justement. On pourrait. On va laisser WordPress. Il y a des outils WordPress pour ça. On va utiliser les outils WordPress au maximum. On va utiliser une fonction qui s'appelle Get Header. Et Get Header, elle va chercher un fichier qui s'appelle header.php. Réglez. Il n'y a rien à faire. Il y a un truc qui est intéressant, c'est qu'on peut lui passer un paramètre. Par exemple, on peut lui passer un paramètre. On va appeler Fubar. Et si on lui passe Fubar, Get Header, il va chercher un fichier qui s'appelle header-fubar. On va faire un header pour différentes pages. Ok? Regardez-moi le faire. On va faire un petit header-fubar.php. Et dedans, on va mettre Fubar. Non, ça, c'est le prototype. Là, on a le site. Et voilà. Fubar. Ça a été le cherché mon fichier header-fubar. On va l'enlever tout de suite. Oui, je supprime. Oui. Et je vous le donne en mille. La fonction pour aller chercher la site-bar, elle s'appelle GetSiteBar. Pareil, elle fonctionne exactement de la même façon. On peut lui passer un identifiant et ça va chercher site-bar tiré-identifiant. Et pour le footer, GetFooter. Normalement, tout notre contenu est de retour. Ok? J'ai fait un peu le widget. Le widget est là. Alors, je vais vérifier que je n'ai pas oublié une balise-div. Six erreurs. Oui, il essaie de chercher nos colliers de style. Il ne les trouve pas. Donc, on a bien notre main. Donc, on a bien notre div-content. On a bien notre main. On a bien notre site. Et on ferme la zone de contenu. Et on a notre footer qui s'ouvre. Donc, on n'a pas fait d'erreur. Alors, maintenant, c'est notre template d'index. Il appelle le header. Il y a notre contenu qu'au déendure. Il appelle la site-bar. Il appelle le footer. Donc là, ce qu'on va faire, c'est qu'on va charger les styles de WordPress. Notre feuille de style. Alors pour ça, on a besoin de se hooker sur WordPress. Donc, je vais créer un petit fichier. Pareil, très important. Functions. La PHP. Et ce fichier, il va contenir toutes les fonctionnalités de notre thème. Toutes les déclarations de menu, toutes les déclarations de site-bar, etc. Le bar latéral. C'est pareil, il ne faut pas se fichier, il ne faut pas faire de faute. WordPress cherche, quand il détecte un thème, il cherche à ficher functions. Il ne faut pas se compter sur le nom. Et on va utiliser WordPress. Alors, qu'est-ce que c'est qu'un hook ? WordPress, en fait, ça implique un peu le truc, WordPress, c'est juste un gros script de PHP. Et il nous offre la possibilité d'intervenir un certain endroit. C'est ça, les hooker WordPress. Il nous donne la possibilité d'intervenir soit en exécutant de fonctions, ou soit en modifiant, en manipulant de données, on appelle ça un filtre. Donc là, en fait, il faut qu'on dise un WordPress, ok WordPress, c'est très à l'afficher, n'oublie pas, il va chercher un filtre de style. Donc là, c'est ce qu'on va faire. Donc on va faire un action. On va se mettre sur WP NQ scripts, sans faute, c'est mieux. On nous rend de balises PHP, c'est mieux. Et on va dire notre fonction, on va l'appeler, il faut les préfixer toujours avec le nom de votre thème. Et on va l'appeler, par exemple, script. Et cette ligne de code, on dit WordPress, ok WordPress, alors quand tu vas charger les feuilles de style et le JavaScript, n'oublie pas d'exécuter ma fonction. D'accord ? Donc on va la faire notre fonction. Function script, pas besoin de paramètres. Et dans notre fonction, on va dire on va enregistrer une feuille de style. Donc en fait, on va dire WordPress, on dit pas, j'ai une feuille de style qui est là. Quand tu arrives sur ce hoop, quand tu es prêt à imprimer les styles, tu n'oublies pas de me faire ça et de mettre la feuille que j'ai enregistrée. La feuille de style que j'ai enregistrée. Non, alors, sur WP and Q scripts, tu cherches ton CSS et ton JS. Et après, c'est dans la fonction dans la function dans la callback, là, que tu vas dire à ton JavaScript, tu vas en header ou tu vas en footer. Ok, le hook, il s'appelle WP and Q scripts au pluriel. Et après, tu as deux fonctions, on va utiliser la tout de suite pour le feuille de style et WP and Q script singulier pour le JavaScript. Ok? Oui, dans la même fonction. On va y revenir. Donc là, on va faire WP and Q style. Voilà. Alors, ça là, elle prend beaucoup de paramètres. Alors, vu qu'il y en a cinq ou six et que je me trompe tout le temps dans l'ordre, on va aller voir dans la documentation. Donc moi, j'utilise la référence de WordPress. Alors, malheureusement, elle est plus en anglais. Mais je la trouve très, très bien faite. Donc, je vais essayer de vous paraphraser un petit peu. Donc, on va chercher WP and Q scripts. Voilà, d'accord. Vous ne pouvez rien avec le dollar. Normal. Voilà. Elle prend plusieurs paramètres. Le premier, c'est le nom de votre feuille de style. C'est un mot, c'est un identifier. Le deuxième, c'est la source. La source, là, c'est là où il faut aller trouver l'URL, enfin, il faut aller générer l'URL pour trouver votre feuille de style. DApps, c'est les dépendances. Par exemple, si votre feuille de style elle doit être chargée après une autre feuille de style, vous pouvez dire que c'est une dépendance qui va s'arranger pour charger les feuilles de style dans le bon ordre. Numéro de version. Ça, je ne conseille pas d'en mettre. Moi, je mets toujours au nom. Et une média. Alors, vous pouvez charger des feuilles de style selon le média. Vous pouvez mettre ici une média query. Vous pouvez mettre une média query CSS là-bas. Vous mettez une média query CSS et il va vous chercher uniquement la feuille de style. Donc, je mets une média query dans ma feuille de style principale et je change une seule feuille de style principale. De toute façon, une média query, si on n'est pas dans les clous, elle est nuorelle par le navigateur. Donc, il n'y a pas de perte, il n'y a rien. Et ça me permet d'avoir tous mes styles dans un seul fichier aussi. Donc, on y va. Donc, rien d'autre. On va l'appeler select style, par exemple, c'est la source. Alors là, c'est un petit peu plus compliqué. On va utiliser une fonction loi presse qui s'appelle get template directory you are right you are right. Et ça, ça vous renvoie l'URL vers le dossier de votre thème. Ok? Donc ça, ça va me renvoyer localhost, blah blah blah, jusqu'à mon thème. Ok? Je vais aller lui coller derrière. Ok? Tu vas chercher style. Ok? Donc, on a l'URL. On rajoute style. Ce qui veut dire qu'en fait, dans un thème, on peut parfaitement avoir un fichier style.css avec juste l'entête pour qu'on represse quatre qui ont un thème, mais que notre css est complètement ailleurs. Ça, c'est possible d'avoir un thème. C'est pas recommandé. Sur le repos, ils disent non, ils disent css, et vous chargez le même fichier. C'est pas recommandé, mais c'est faisable. Et on a un troisième param dépendance, il n'y en a pas. Donc, je mets une array build. Alors si tu veux qu'il y ait une dépendance, tu mets le nom. Ouais, tu mets l'identifiant de la feuille de style qui doit être chargée avant. Tu vois? Donc c'est utile quand tu fais un thème enfant. Tu peux dire, oublie pas de charger d'abord le param. Tu fais des thèmes? Non. Bah non. Pas besoin. De toute façon, tu peux pas les charger sur le repos. Sur le repos, tu les charge le thème bruit. Après, tu les charge le thème. Tu as le thème bruit qui fonctionne si tu veux faire ton truc. Donc ça, c'est les dépendances. Donc il n'y en a pas. On met une array build. Le numéro de version, on met non. On oublie tout le temps les médias. On met non. On peut le mettre. Parce que par défaut, c'est non. Je voulais juste mettre non pour la version. C'est pour ça que j'ai dû mettre mon array build avant. Mais sinon, on fait ça. Toutes les autres parmi sont remplies par défaut. Ce n'est pas ça de problème. Voilà. Si je n'ai pas fait de petit pot, on a notre feuille de style. On dit à WordPress, ok WordPress. Quand tu vas charger les scripts, on y va. Trois en les doigts. Ouais, ils vont pas se lâcher. Ils vont pas se lâcher. C'est toujours bas. Alors, 404, 404. Qu'est-ce que je vais faire ? Je vais tricher. Je vais lui faire une faute. Tu veux faire une faute de frappe qui te part. On va apparemment prendre la feuille. Oui, c'est vrai que là, j'essaye d'y aller avec le get and play. J'essaye d'y aller avec ... Alors j'essaye d'y aller avec get and play directory URI. Ça, ça donne le chemin vers le thème. Il y a une autre fonction qui s'appelle get get style sheet directory URI et celle-là, c'est un sheet avec deux chevaux. Et celle-là, elle donne le chemin vers le dossier du thème activé. Ça veut dire que get template directory, elle donne vers le parent. Get style sheet directory, elle donne vers l'enfant. Sauf si le parent est activé, là, elle donne le parent. Et sinon, c'est vrai qu'il y a cette fonction-là. Get style sheet URI, et donne URI vers style.css. Bon. On va essayer avec celle-là. Je vais faire un petit pot de cash. Il me dit get style. Select scratch et je select scratch, et je la queue sur WP and Q scratch. Je suis sur le bon hook. Select scratch and Q scratch. On va le faire à la bretale. On va faire ça. Je suis même pas au pied, pourquoi je suis pas au pied? J'ai fait une pote dans ma fonction. On peut fichier ce type de get style URI. Ouais, ça va. La concatenation. Ouais, non, mais pourquoi on veut fait daggy pas school? Attendez, on va faire un bizarre second moment. Je suis bien dans mon thème, là, je suis pendant le proto. Je suis dans le bon fichier. Ouais, non. Ok, c'est compliqué. D'accord. Là, je suis dans la navbarre. Pourquoi il me le met même pas dans la navbarre? Comme ça. Oui, c'est bon, on est bon. Non, en fait, le truc, c'est tout con. C'est que j'ai pas permis à WordPress d'écrire dans mon editor quand t'acheter. On va le faire tout de suite. Je m'apprécie en fait. J'ai oublié une étape. Mais on n'a rien vu. J'enlève ça. Dans functions. Il n'y avait pas de problème, ça marche. On enlève. En fait, je dis à WordPress il y a une feuille de style. Je ne dis pas à WordPress ou mettre la balise link pour aller chercher ma feuille de style. J'ai oublié un hook. Ici, dans le header, dans la balise head, qui s'appelle WP head. Je n'avais pas encore fait ça. Donc là, avec cette ligne, WP head, je crée un hook. Je crée un hook. Je permets à WordPress, à cet endroit-là, d'aller écrire ces balises-là. Les balises crépies. Je peux virer ma balise link ici. Ma balise Google. Pour l'instant, on va la garder. Là, j'ai mis le hook pour que WordPress aille chercher ses styles. Mais c'est rare. Ce n'est pas encore parfait. On n'a pas encore les polices de caractère. Il manque encore plein de trucs. Mais là, la feuille STYRE d'un CSS, elle passe. On a le layout, on n'a pas la police. Oui, ben... Oui. Oui, parce que là, si tu veux, en fait, ce qu'on fait là, c'est qu'on enregistre une feuille de STYRE. On vient de voir WordPress. Ok. J'ai une feuille de STYRE à enregistrer. Elle est là. Mais on ne dit pas où il doit la mettre. Et c'est à ça que ça s'occupe. Et là. C'est là. D'accord? En fait, s'il n'y a pas ça dans ton ten, WordPress ne peut pas écrire de balises-links ou de balises-crépies. C'est mercredi que je viens de faire un instant. D'accord? Donc, en fait, c'est tout à l'aide. Là, où WordPress est censé mettre des balises-links, des balises-crépies, des balises-neta, tu sais. Donc, les... Voilà. Voilà. Désolé pour cette erreur grosse hier. Donc, qu'est-ce que... Oui, il est police de caractère. Maintenant, on va charger les police de caractère. On va utiliser la même fonction. Une police de caractère, c'est un peu comme une feuille de STYRE. On va utiliser la même fonction. C'est un peu STYRE. On va l'appeler ça Select Points. Et là, on va pas s'embêter. On va aller prendre le URL codé Endure. Là, hop. Je la copie. Je la mets ici. Endure. Dépareil, pas de dépendance. Pas nul en version. On va regarder si ça marche. Ça marche pas. C'est pas mon joueur. Attends, je vais aller regarder. Ah oui, c'est peut-être du réseau. Je vais regarder. C'est peut-être du réseau. Parce que ma fonction est bonne. Regarde. Et là, je vais hop. J'ai tapé URL Endure. C'est peut-être du réseau. Une fois que ce sera en cache, c'est peut-être du réseau. Donc, il ne trouve pas mes images. Et... Ah oui, d'accord. Regardez. Ici, il y a une ressource qu'il ne trouve pas. C'est Select Points Controller. D'autres y a dit. C'est une... C'est une colise de caractère que je vais chercher qui est dans les fichiers de mon thème. Donc, en fait, si vous allez dans le prototype, vous avez un dossier France. D'accord. Et il faut copier ce dossier France dans le dossier du thème. C'est-à-dire que je ne vais pas chercher que des Google France. Je vais chercher une Google France et deux fonds qui sont dans mon fichier de thème. Je les oublie. On va refaire un petit coup d'écoli. Donc, je vais aller prendre ici dans mon prototype. Je vais prendre le fichier France. Je ne vais pas l'oublier dans 2 minutes 30. Et on va aller le mettre dans le dossier du thème. Donc, dans le dossier du thème, maintenant, j'ai mon fichier France. Donc, normalement, il devrait trouver un étoiliste. On va essayer. OK. Voilà. Si il me manque des fichiers, ça ne va pas aller. D'accord. Si vous appelez des polices de caractère et que vous ne les avez pas dans votre thème, ça ne va pas aller. Voilà. Donc là, on a un template. Tout connaît en dur. On a chargé notre feuille de style. On va faire pareil avec notre feuille de nos scripts. Et pour les scripts, pour les scripts, on va utiliser WP and Q script. Je vais copier coller la fonction comme ça, on gagne votre temps. Donc, c'est presque la même fonction. WP and Q script. Donc là, le script de navigation. Je vais le chercher en utilisant le fonceau. Elle va chercher d'abord dans le thème enfant. Si elle ne trouve pas, elle va chercher dans le thème parent. D'accord. Donc là, je vais aller chercher dans mon thème parent, dans le dossier JS que je viens juste de copier. Le fichier navigation.js. Et ensuite, ici, il y a un dernier paramètre qui a ajouté sur cette fonction. C'est pour lui dire où est-ce qu'on veut mettre le script. Est-ce qu'on le met en bas de page ou dans le header? Donc, si on met faux, il va nous charger notre script dans notre balise head. Si on met vrai, il va nous charger notre script dans le bas de page en fait. Il faut aller dans le template pour lui donner la possibilité d'aller écrire les balises scripts. Donc dans le template de footer, ici, vous voyez, on a une balise script en dur. On va l'enlever et on va mettre WP footer. Ok. Hop. Ouais. Attends. C'est bon. Donc là, on a chargé notre style et notre JavaScript. Ok. Maintenant, on va retourner dans notre header. Ce qu'on va faire, c'est qu'on va enlever petit à petit tout ce qui est codé en dur en fait. Donc là, ça, on enlève. On en a plus besoin. Ça, on enlève parce que c'est chargé dans le footer via WP footer. C'est balise. Là, on verra après. Ce n'est pas forcément important. Ici, on va changer le titre du site. On va aller sur la blog. On va utiliser une fonction qui est bien pratique, qui s'appelle blog info. Le... Quelle est la bonne fonction ? Ah oui. Alors, tu peux t'inspirer d'un 20. Tu regardes les 20, les 20 sont bien codés. Ils sont relativement singes, ça va. Ils sont bien codés. Tu regardes dans un 20, tu vas voir combien de choses. Après, tu peux regarder dans l'underscore aussi. L'underscore, c'est les starter themes automatiques. Pareil, il est très, très bien fait. Il va te montrer. Lui, il utilise blog info, ça marche. Je ne vois pas pourquoi on utilise quelque chose. Tu peux faire des choses. Tu peux toujours faire des choses différentes. Tu prends un thème tout simple. Tu prends le 20. Parce que, de toute façon, les 20, c'est la façon dont on voit pas que ça apprend à ce qu'on code un thème. Tu prends le 20, c'est toujours une bonne référence. Et tu regardes, je suis l'épuche. Tu regardes comment ils s'appellent. Là, blog info, on peut aller chercher le name, on peut aller chercher la description du site, on peut aller chercher l'URL, etc., etc. Donc là, on va faire, on va remplacer ça. Voilà. Blog info. On va mettre le nom du site. Donc ça a display, the site title, donc ça affiche le titre du site. Ça, à la limite, je vous laisserai regarder tous les petits trucs comme ça, la description, tout ça. Je vous laisserai regarder sur le thème qui est fini. On fait les menus. Comment on va faire, rendre notre menu une navigation fonctionnelle. Comme ça, on pourra enlever ça de grosse dalle ici, UL. Alors, on revient là, dans notre fichier fonction. On va se louper sur un autre hook de WordPress qui s'appelle After Setup Team. Donc ça, c'est une fois que tu as méchargé. Et dans cette fonction, dans cette fonction, en fait, c'est là qu'on va déclarer tous nos menus, tous nos bars latérales, tous nos zones de widget, etc. etc. Donc, function Select Setup On va faire un paramètre. Et dans cette fonction, on va faire alors pareil, bon, en côté, je vais gagner un peu de temps. Je vais aller choper là-dedans. On va aller utiliser une fonction. Alors, le load text domain, honnêtement, je ne pense pas qu'on va en parler. On va utiliser une fonction qui s'appelle Main Menu, et elle enregistre simplement une zone de menu. Donc là, on va enregistrer une zone de menu qui s'appelle Menu 1. Et le titre de la zone de menu, c'est Main Menu. Cette fonction-là, vous la connaissez? Double underscore, en fait, c'est pour rendre une chaîne traduisible. Donc là, ça veut dire que cette chaîne-là, elle est traduite. On peut la traduire. Et si on... On peut la traduire et elle est associée au texte domain de Select. Ça veut dire que quand WordPress va charger on est dans le thème Select. Main Menu Select, est-ce que ce n'est pas traduit en français, par exemple, dans votre langue? Donc je vais prendre la fonction Regist of Menu. Je retourne dans mon fonction. Donc là, bon, du coup, je vais faire un peu plus de copies-collés parce qu'il n'y en reste pas beaucoup de temps. Oui, il n'y en reste pas beaucoup de temps. Je vais expliquer un petit peu. Donc Regist of Menu, je reviens ici sur mon thème. Je rafraîchis. Et là, j'ai les menus qui apparaissent dans la menu. Alors que sur un thème où il n'y a pas de menu enregistré, l'option menu, elle apparaît même pas dans la menu. Donc là, je peux créer un menu. Vous voyez? Menu Name, Menu One. On va le garder, on va faire Cue A. Et on va juste le rajouter, par exemple, le Hello World. App to Menu. Je sauvegarde. Donc là, j'ai un menu qui est déclaré. Et je peux l'affecter à ma nouvelle zone qui s'appelle Main Menu. D'accord? Donc là, j'ai juste enregistré une zone de menu. Donc je peux affecter des menus à cet emplacement de menu. Mais maintenant, cet emplacement de menu, il faut aller le mettre dans le thème. C'est exactement comme le hook de tout à l'heure. Le même principe. Du coup, dans notre thème, on retourne dans notre Header. Dans notre Header, on va utiliser une fonction qui s'appelle WP Nav Menu. Et là, par contre, on va prendre un param. Donc ça prend une fonction qui prend pas mal de paramètres quand même. On va très vite fait. WP Nav Menu. Allez. On n'a pas le temps. Hop. En fait, ça prend une array, un tableau d'argument. Et quand on regarde le tableau d'argument, menu, quel menu on va ficher? Est-ce qu'on veut le rajouter une classe spéciale? Est-ce qu'on veut le rajouter un ID spécial? Est-ce qu'on veut le mettre dans un conteneur? Etc. Il y a beaucoup de paramètres ici. Nous, je vais aller chercher mes paramètres. Non, ils sont dans mon Header. Donc, tu as fini, Header. Notre fonction, elle est là. Elle est ici. Il n'y a que deux paramètres. Conteneur, je passe false. Parce que je ne veux pas qu'il emballe mon menu dans un div. Je lui passe false. Sinon, il va faire div et après, il va faire ça. Ça y well. Je ne veux pas ça. Je veux juste ma liste. D'accord? Donc je passe false. Et Theme Location, c'est ok. À l'endroit où il y a cette fonction, c'est quel emplacement de menu, quel menu tu vas afficher? Tu vas afficher le menu qui est associé à cet emplacement de menu. Je ne sais pas si ma phrase était très claire. Est-ce que vous voulez que je la refasse? Ok. Alors, tu vois? Attends. Deux secondes. Deux secondes, je vais le coller tout de suite. Comme ça, n'oublie pas. Du coup, ça, je peux l'enlever. Conteneur, tu as compris? Je ne veux pas de conteneur. Je veux que ce soit pas de deal au-dessus, rien du tout. Juste le conteneur. Juste la URL. Et Theme Location, ça veut dire que à cet endroit-là, met-moi les menus qui sont associés à ma Theme Location que je viens de déclarer, en fait, simplement. Tu vois, ma Theme Location qui est ici, mon emplacement de menu, tu vois? Je déclare un emplacement de menu qui s'appelle menu 1. Et là, je dis, tu me mets les menus, le menu associé à menu 1, simplement, dans la ligne. Ce qu'on vient de faire, là, ici, on l'a associé à menu 1, qui s'appelle main menu, mais si on identifie, c'est menu 1. Et donc on dit, affiche-moi le menu qui est associé à menu 1. Non, c'est cette prototype. Vous êtes série? Voilà. Et là, vous voyez, on a notre menu. Donc on a notre menu qui est là. Je vous montre la zone de widget. C'est exactement le même principe. La zone de widget. Pareil, pour gagner du temps, je vais aller chercher tout ça dans un puissier fini. Donc la zone de widget, je vais dans functions. Voilà, on est là un peu plus haut. Voilà. On utilise une fonction qui s'appelle register sidebar. La fonction register sidebar, elle va tout simplement définir une zone de widget. Pareil, hein. On met cette fonction. Ça veut dire quoi? Ça veut dire qu'il y a une zone de widget dans l'aluminium. Dans l'administration noire poste, il y a une zone de widget pour notre thème. Et après, il faut aller dans les fichiers de notre thème pour dire ici, affiche-moi les widgets qui sont associés à cette zone de widget. Donc là voilà, register sidebar. Je vais copier ça dans mon fichier fonction de mon thème qui est là. On est toujours dans le même hook. C'est-à-dire ok, WordPress, au moment où tu vas faire les réglages du thème, déclarer les miens. Donc je l'appelle blogsidebar. Je lui donne un identifiant. Je lui donne une petite description. Une fois en widget, c'est le balisage que vous voulez avant votre widget. Donc moi, tous mes widgets sont dans une section, simplement. Et before and after, c'est le balisage que vous voulez autour de votre titre. Simplement, before and after title. Donc moi, j'ai mis H2. Tout mes types de widgets, ça va être des H2. Donc on sauvegarde. On va dans la mine. Si je la retrouve. Apparence. Et là, on a widget. On n'avait pas tout à l'heure. Je ne sais pas montrer qu'on ne l'avait pas, mais on n'avait pas widget tout à l'heure. On va dans widget. C'est parti. On va lui mettre catégorie. Et puis meta. Juste pour tester. Donc là, c'est déjà sauvegardé. Mais par contre, ça ne va pas apparaître sur mon site. Donc je vais retourner dans mon fichier qui s'appelle sidebar. Je ne sais pas si vous vous souvenez. Pour l'instant, j'ai une sidebar qui est codée en dur. Je vais aller prendre le code dans le tel fini comme ça on va gagner 2 minutes. Une sidebar. Je remplace mon code en dur. Alors, qu'est-ce que je fais en fait? Ici, je fais un if. Si la sidebar 1, si la sidebar 1 est active, ça veut dire quoi? Si il y a des widgets dedans, tu me mets un aside avec la classe qui va bien pour mon style. Et dedans, la fonction dynamic sidebar, elle vous débite tous les widgets dans l'ordre. Donc une sidebar, c'est aussi simple que ça. Est-ce qu'il y a des widgets enregistrés? Oui, tu as une dynamic sidebar. Tu me décolles. On revient. Ça, c'est le prototype. On visite le site. Et là, vous voyez, on a notre sidebar. C'est comme ça qu'on déclare une sidebar. Le footer, je vous laisse regarder. Je vous laisse regarder sur le tel fini. C'est juste un message. C'est juste une chaîne. Il faut juste s'assurer qu'elle soit tradisible. Tradisible. Bon. Je pense qu'on va s'arrêter là. La hiérarchie des templates. Je vais vous montrer la hiérarchie des templates rapidement parce que ça, c'est vraiment important. On a perdu 5 minutes sur l'escrit. J'oublie mon ouf. Voilà. Alors, ce schéma barbare. Ce schéma barbare, en fait, c'est la hiérarchie des templates de WordPress. Alors, qu'est-ce que ça veut dire? Non, je ne veux pas m'inscrire. Qu'est-ce que ça veut dire? Ça veut simplement dire que c'est un schéma qui explique la logique de WordPress. Comment est-ce qu'il va se chercher, fouiller dans votre thème pour trouver le bon template? À gauche, vous avez les vues qui sont possibles sur un site. Par exemple, une vue d'archive. Une vue de page simple. Une vue de la page d'accueil. Ici, on a un petit peu plus bas. Une 404. Voilà. Ça, c'est les différentes vues qu'il y a sur un site. Et quand on va vers la gauche, WordPress va chercher les templates sur son chemin. Donc, par exemple, on veut afficher une page toute simple. On est dans ce cas-là. Donc, on veut afficher une page toute simple. Alors, ceci, c'est un article ou c'est une page statique. Admettons qu'on est cliqués sur, bah, à propos. Ok, c'est une page statique. D'accord. Alors, est-ce qu'il y a un template spécial pour cette page statique? Non, c'est un template par défaut. Vous n'avez pas de template page tiré about dans votre thème. Bon, ok, donc c'est un template par défaut. Alors, est-ce qu'il y a un template qui s'appelle page tiré about? Oui ou non? Non, vous d'accord. Est-ce qu'il y a un template qui s'appelle page tiré 1, 2, 3? En supposant que l'identifiant de mon about c'est 1, 2, 3. Non, toujours pas? Ok, bah on va chercher page.php. Il n'y a pas de page.php? Ok, bah on va chercher singular.php. Il n'y a pas singular.php? Bon bah ok, on va chercher index. Et c'est pour ça qu'il est obligatoire ce template. Ok? C'est le template par défaut, le fallback par défaut. J'aurais voulu créer page single mais je pense qu'on va pas avoir le temps mais au moins pour vous montrer. Voilà. C'est template bleu là. Moi je vous conseille si vous faites un thème de toujours inclure tous les templates bleus foncés qui sont là. Parce qu'en fait c'est les templates par défaut des vues de base, quoi. Une vue d'archive si vous n'avez pas un template ultra spécifique, des besoins très spécifiques, et bah ça va chercher 1.php, d'accord? Si vous avez un article simple ça va chercher single.php d'accord? Donc vous allez voir vous pouvez éplucher tous les thèmes que vous voulez. Tous les thèmes, ils auront tous ces templates au moins tous les bleus foncés. Et après ils auront des templates un petit peu plus spécifiques. D'accord? Oui? Je suis une question d'habitant. Je vous rembue sur chaque case d'accord? Vous avez un schémote à la partie? Vous avez compris le principe de la hiérarchie? Ce qu'il faut que je vous montre en 230 je fais juste un template pour vous montrer. On va faire, regardez on va faire un truc tout simple. Je vais prendre mon index si je le trouve. Donc là je suis bien, alors je suis dans mon select, je vais prendre mon index d'accord? Je vais le sauvegarder sous. D'accord? Donc là il s'appelle page.php se fichier. Ok? Et pour se fichier je vais juste garder un article. Donc je dégage là j'ai 2 articles codés en dur ici tout que je l'enlève. Un article codé en dur ici je l'enlève. Ok? Et on va juste enlever la sidebar. On dit que sur les pages on ne veut pas de sidebar. Donc on enlève ça. Ok? Je sauvegarde. Je reviens sur mon template. C'est le prototype. Je reviens ici. Je clique par exemple sur page d'exemple. Vous voyez? Il m'affiche un seul article sans sidebar. Il y a un petit problème de CSS. D'accord? Parce qu'il y a une classe que j'ai mis en trop. Il faut que je fasse un petit filtre pour l'enlever. Malheureusement je ne peux pas vous montrer. Mais voilà. Vous voyez? Il affiche uniquement l'article que j'ai demandé sans sidebar. Donc là automatique. Là il a trouvé page.php. Par contre si je clique sur un... T'as une question? Il y a un problème? Non, je crois qu'en fait on voit que c'est page.php dans le mail. Non, non. Tu ne vois pas le template. Tu vois le slug. Tu sais que là je suis sur la page. Mais reviens, sinon on va le faire. Tu fais ça. Si tu veux tester chez toi, tu es en test, tu es en train de développer. Tu fais Toto. Tu écris Toto dans ton template. Tout, toi. Il est là mon Toto. Tu sais que tu as chargé le bon template. Tu vois? Donc voilà. Pour les templates de page, c'est page.php. Pour les templates d'article sainte, c'est single.php. Mais vraiment je vous recommande de faire tout ces templates. Alors il y a un truc du coup qu'on n'a pas le temps de faire et que... Ouais, alors déjà c'est la boucle. On n'a pas le temps de parler de la boucle. Alors je vais prendre une minute 30. Je suis désolé. Non, mais là il peut. Ok, ça marche. Je suis désolé. Mais c'est très long en fait. Alors, la boucle. Regardez elle est là. En fait, je vous la commente. D'accord? Je vous la commente. Donc je ouvre ma zone de contenu. Main. Ok. Ça c'est la boucle de doigts en presse. Qu'est-ce qu'elle fait la boucle de doigts en presse? Elle va tout simplement chercher le contenu. Et s'il y en a, s'il y a plusieurs articles affichés, elle les affiche à la suite. C'est vraiment une boucle, une bête boucle. Avec la fonction halfPost, on vérifie est-ce qu'il y a des postes à afficher. Oui, il y a des postes à afficher. Ok. Donc, tant qu'il y a des postes à afficher, where halfPost, tu me le prépares. Donc, thePost va prépare le post à être affiché. Et ensuite, tu me l'affiches en utilisant un fichier qui s'appelle content et qui se trouve dans le dossier templatePost. D'accord? Ensuite, tu me mets la navigation. Donc, ça c'est pareil. C'est une fonction par défaut de WordPress. ThePostNavigation. Boom! Ça vous met les liens précédents en suivant. Ok? Donc, le article précédent en article suivant. Si jamais là, tu n'as pas trouvé de contenu, tu me mets un message d'erreur. Donc, là, le message d'erreur, je vais coder dans un autre fichier qui s'appelle content and none. D'accord? GetTemplatePost, ça va chercher un petit bout de template dans votre thème. Donc là, je fais getTemplatePost templatePost slash content. Ça va chercher ce fichier. Si. Ok? Et c'est ce fichier-là Qu'est-ce que je fais? Je fais une balise article avec l'inventifiant. Si c'est un article simple, tu mets un petit aideur avec les méta et avec l'image. Donc, l'image, je sais quoi, c'est thePostNavigation. Ça va chercher l'image à la une. Ok? C'est tout simple. Le titre, je fais un lien avec le permalien. Donc, là, il y a une fonction de WordPress, the permlink. Je vous donne l'URL vers l'article, vers l'élément de contenu. Le titre de l'article. Et selectMeta, par contre, ça, c'est pas native de WordPress. C'est une fonction que moi, j'ai faite. Et c'est celle-là qui affiche la catégorie et la date, à côté. Vous voyez? Mais ça, c'est natif. Ça, c'est natif. Ça, c'est natif. Ça, c'est natif. Tout est natif. Il y a WordPress. C'est un sacré levier, quoi. Il nous donne beaucoup d'aide. Et pour afficher tout le contenu de l'article, the content. Et ça, ça affiche tout ce qui sort, tout ce qui est, ce que vous avez tapé dans votre éditeur. Ok? Dans votre éditeur, dans la nuit. WP Link Pages, c'est pas indispensable, c'est recommandé parce qu'il y a des gens, il n'y en a pas beaucoup, mais il y en a, par exemple, qui font des articles et qui peuvent diviser en plusieurs pages l'article. Ça se fait diviser un article en plusieurs pages. Donc WP Link Pages, ça va donner les liens de pagination, en fait, vers suite de l'article, page 2. Super. Si tu l'as appliqué, c'est en la page 2 de l'article. Donc ça se fait plus trop. Mais bon. On le met quand même. De toute façon, si l'article il n'est pas paginé, ça affiche à rien, c'est tout. Et Select Entry Faulter, ça, c'est une petite fonction que j'ai fait moi aussi. C'est celle qui affiche les tags. Je ne sais pas si vous avez vu sur le prototype. C'est la petite fonction... J'ai fermé mon prototype. C'est la petite fonction... Donc du coup, le prototype, il est là, il est là. Voilà. Donc ça, vous voyez, ça, c'est une petite fonction custom, mais elle utilise 3 fonctions natives de WordPress. Vous verrez voir dans le code, ces 3 fonctions natives de WordPress pour appuyer ce petit truc là. C'est juste que moi, je les ai mises dans ma propre fonction. Comme ça, dans mon template, j'ai une seule ligne. Vous voyez, plutôt que d'avoir un gros pavé de 10 lignes, j'ai une seule ligne. Et ma fonction, elle est dans mon puissier functions.php. T'as compris ? Honnêtement, aller voir le code, tout est bien commenté, tout est bien expliqué. C'est celle-là. C'est celle qui met les tags avec la liste des tags. D'accord ? Voilà. Merci de m'avoir... ...m'avoir écouté.