WordPress : Pods et les champs "Simple" "Relationship"

Quand il s'agit de faire quelque chose de compliqué avec WordPress, au niveau des données, et qu'aucun plugin ne vous convient c'est à des solutions comme Pods que l'on s'adresse.

Pods vous permet en effet de carrément créer vos propres modèles de données ou bien d'étendre n'importe quel modele de WordPress (comme les Articles par exemple) en y rajoutant des champs, des relations ...etc.

C'est en utilisant un de ces champs de Pods (le simple menu déroulant sans relations) que je me suis trouvé confronté à un problème tout bête mais qui m'a un peu bloqué jusqu'à ce que la lumière se fasse, je vous livre donc l'astuce ici...

Imaginons que vous avez créer un Pod « Voitures » avec tout plein de champs (nom, cylindrée, année ...etc.) mais que vous vouliez un champ « couleur » qui soit un menu déroulant avec des choix prédéfinis pour que vos utilisateurs ne choisissent que les couleurs disponibles. Et vous ne voulez pas que ce champs soit une relations avec un autre Pod ou bien un autre objet Wordpress mais une simple liste toute bête.

Donc dans votre Pod rajoutez un champ de type « Relationship » puis dans l'option suivante choisissez « Simple (liste définie manuellement) ». Ensuite dans le champ texte qui suit vous allez entrer vos options (qui apparaitrons dans votre menu déroulant) sous la forme :

valeur|intitulé

(« valeur pipe intitulé » sans les espaces) et une entrée par ligne. On fait cela pour avoir des « valeurs » propres (sans espaces, accents ...etc.) utilisables directement dans notre code sans foutre le bordel et à coté quand même pouvoir utiliser des jolis intitulés.

Donc vous allez vous retrouver avec une liste appelée « couleur » genre :

rouge|Rouge Ferrai
noir|Noir Métallisé
blanc|Nacre Mat

Ensuite quand vous allez vouloir utiliser cette liste vous allez, pour une voiture « noir » par exemple :

Dans les « templates » de Pods utiliser le shortcode : {@couleur} ; ce qui donnera « Noir Métallisé » directement, le tag du template étant relativement intelligent il va sortir l'intitulé bien sur.

Dans le code PHP par contre (dans les Pages Pods ou direct dans des fichiers .php du thème) vous allez avoir deux options :

si vous utilisez (comme le plus souvent) :

<?php echo $books->field('couleur'); ?>

cela va envoyer « noir » comme résultat, car ce sera bien la valeur enregistrée dans le champ « couleur » de la table de votre Pod.

Si vous voulez bien afficher le joli « intitulé » il va falloir utiliser la méthode « display » plutôt :

<?php echo $books->display('couleur'); ?>

qui elle va être plus intelligente et renvoyer l'intitulé plutôt que la valeur. Vous aurez donc bien « Noir Métallisé ». A noter que cette différence entre « field » et « display » s'applique à tous les champs, et je vous engage à lire la documentation de chaque.

Voilà, bon Pods !

Haut de page