Dans la première partie de cette série, j'ai discuté des formats de publication et des raisons pour lesquelles vous devriez les utiliser. Il est maintenant temps d'apprendre à utiliser les formats de publication pour contrôler la boucle principale de votre thème afin d'afficher correctement chaque type de publication..
Avant de pouvoir utiliser les formats de publication dans un thème, vous devez vous inscrire auprès de leur support. Chaque type de publication, intégré (c'est-à-dire publications et pages) ou personnalisées doit avoir la prise en charge des types de publication enregistrés séparément..
Pour les messages que vous utilisez le fonction add_theme_support ()
dans le cadre de la configuration de votre thème dans functions.php
, comme ça:
add_action ('after_setup_theme', 'slug_post_formats'); function slug_post_formats () add_theme_support ('post-formats', tableau ('apart', 'image', 'vidéo', 'audio', 'quote', 'lien', 'galerie',
Pour les autres types de publication, y compris les pages et les types de publication personnalisés, utilisez add post_type_support ()
. Si vous souhaitez que les pages prennent en charge les mêmes formats de publication que les publications, vous devez simplement indiquer à WordPress que vous souhaitez que cela ressemble à ceci:
add_post_type_support ('page', 'post-formats');
Vous pouvez utiliser un code similaire pour ajouter la prise en charge de types de publication personnalisés ou ajouter "post-formats" à l'argument "supports" dans register_post_type ()
lorsque vous créez le type de message.
Dans la section précédente, le code que je vous ai montré ajoutait une prise en charge à d'autres types de publication, dans les mêmes formats de publication que ceux activés pour les publications. Si vous souhaitez que votre type de publication personnalisé prenne en charge différents formats de publication, vous pouvez également utiliser add_post_type_support ()
en lui passant simplement un tableau de formats de messages.
Par exemple, pour ajouter une prise en charge des galeries et des images aux pages, tout en ajoutant de la vidéo à un type de publication personnalisé appelé "produits" et tous les formats de publication à des publications, procédez comme suit:
add_action ('after_setup_theme', 'slug_post_formats'); function slug_post_formats () add_theme_support ('post-formats', tableau ('apart', 'image', 'vidéo', 'audio', 'quote', 'lien', 'galerie', add_post_type_support ('pages', 'post-formats', tableau ('galerie', 'image')); add_post_type_support ('produits', 'post-formats', tableau ('vidéo'));
Maintenant que votre thème prend en charge les formats de publication, il est temps d'apprendre à les utiliser..
Ce qui rend les formats de publication sympas, c’est que nous pouvons avoir une boucle principale, avec nos balises différentes pour chaque format de publication dans des fichiers séparés. Cette fonctionnalité est due à deux fonctions, la première avec laquelle vous devriez vous familiariser est get_template_part ()
.
Bien qu'il utilise exiger()
, si vous tracez assez loin dans le code source, get_template_part ()
nous donne un moyen plus souple et plus indulgent d'inclure des fichiers de modèle dans d'autres modèles que nous ne recevons pas exiger()
. Je dis pardonner parce que, par opposition à exiger()
, get_template_part ()
peut fonctionner avec des chemins de fichiers inexistants.
Par exemple, get_template_part ('contenu', 'foo');
va tenter de charger le fichier content-foo.php
, mais s'il n'existe pas tentera alors de charger content.php
au lieu. En revanche, require ('content-foo.php');
renverra une erreur si content-foo.php
n'existe pas, que ce soit content.php
existe ou pas.
Garde en tête que get_template_part ()
est conçu pour cet usage spécifique car il charge les fichiers par rapport à la racine du thème actuel. En conséquence, vous n'avez pas besoin d'utiliser get_template_directory_uri ()
ou des fonctions similaires pour spécifier le chemin. Vous pouvez toujours l'utiliser pour charger des fichiers dans des sous-répertoires du répertoire principal du thème, en spécifiant le chemin d'accès, par rapport à la racine du thème, dans le premier argument. Par exemple, pour charger content-main.php
depuis un sous-répertoire appelé 'parties' que vous utiliseriez get_template_part ('parties / content', 'main');
.
La deuxième fonction qui rend tout cela possible est get_post_format ()
, qui retourne le format de publication pour la publication en cours dans la boucle. Bien qu’elle ait de nombreuses utilisations, cette fonction est principalement utilisée comme argument pour: get_template_part ()
. C’est ce qui nous permet d’inclure des parties de contenu spécifiques à un format de publication, comme nous le verrons dans la section suivante..
En raison de la flexibilité de get_post_format ()
discuté dans la dernière section, nous pouvons utiliser get_post_format ()
comme l'un de ses arguments, même s'il n'y a pas de contenu dans le thème pour tous les formats de publication utilisés.
Maintenant que vous comprenez les deux fonctions qui rendent possible la création de parties de contenu spécifiques au format de publication, regroupons toutes ces informations..
Jetez un coup d'œil à la boucle principale de Twenty Fourteen:
Comme vous pouvez le constater, cette boucle est très simple. Le balisage réel des articles est contenu dans les différentes parties du contenu. En raison de la nature pardonnante de get_template_part ()
Si une partie du contenu pour un format de publication spécifique n'existe pas, WordPress se repliera sur content.php
. Cela signifie que si le message actuel a le format 'vidéo', WordPress tentera d’abord de charger content-video.php
, et si cela n'est pas trouvé, alors il retombera sur content.php
.
Comme je l'ai dit plus tôt, get_template_part ()
est le thème de l'enfant conscient. Cela signifie que WordPress recherchera d'abord un fichier dans le dossier du thème enfant avant le thème parent, si un thème enfant est utilisé..
En conséquence, c’est une bonne pratique d’utiliser get_template_part ('content', get_post_format ());
d'inclure votre boucle principale dans votre page, même si votre thème ne prend pas en charge les formats de publication. Ainsi, un thème enfant peut déclarer la prise en charge d'un format de publication et ajouter ses propres parties de contenu pour les formats de publication qu'il prend en charge..
Maintenant que vous savez comment ajouter du support à votre thème pour les formats de publication et définir différentes parties de modèle en fonction du format de publication, il est temps de penser à la façon de les utiliser dans votre thème. Je vais expliquer comment faire dans la suite de cette série. Assurez-vous également de consulter le code des thèmes, comme Twenty Fourteen, qui implémentent bien les formats de publication pour obtenir de l'inspiration..