Un Post de WordPress a par défaut :
un titre
un extrait
une image à la une
une catégorie
des mots-clés
Mais imaginons que l’on veuille ajouter un autre champ ? WordPress le permet via les champs personnalisés. Si vous cliquez sur Options de l’écran, vous pouvez cocher la case Champs personnalisés, et un bloc additionnel apparaîtra :
Dans quel cas utiliser un champ personnalisé ?
Les champs personnalisés sont très pratiques pour ajouter des données qui sont uniques à chaque Post.
Par exemple, si on veut associer une couleur à chaque Post, il est plus pratique de passer par un custom taxonomy, parce que les couleurs (rouge, bleu, vert…) seront probablement utilisées pour plusieurs Posts. Et on aura aussi accès à une page d’archive par couleur.
Du coup ici pour montrer comment ça marche, on va utiliser une valeur qui sera unique à chaque post: le prix.
Créer un champ personnalisé
Imaginons qu’on veuille ajouter un champ « Prix » à chaque Post.
(Je dis « Post » ici, mais ça pourrait aussi être un Custom Post de type « Propriété » où l’on liste des propriétés à vendre et auxquelles on veut rattacher un prix spécifique.)
Il suffit de rajouter une ligne aux champs personnalisés :
Cliquez sur « Ajouter un champ personnalisé » et la valeur sera sauvegardée avec ce Post.
Afficher le champ personnalisé
Maintenant, on veut afficher ce prix sur le site. Forcément, on va rajouter du code dans la boucle WordPress, parce que chaque valeur est spécifique à chaque Post.
On va utiliser la fonction get_post_meta dans single.php (par exemple) :
<p>Prix: <?php echo get_post_meta( $post->ID, 'prix', true ); ?></p>
Il y a 3 paramètres :
- l’identifiant du Post
- le nom du champ personnalisé qu’on veut afficher
- le paramètre « single« : sur true ça renvoie une chaîne de caractère unique, sinon ça renvoie un tableau PHP des valeurs. Ici, on a juste une valeur unique de prix pour chaque Post, du coup on met sur « true »
Libre à vous de rajouter ce code dans d’autres boucles de votre site, et d’utiliser des if/else pour les cas où le champ personnalisé « prix » n’a pas de valeur.