Champs avancés personnalisés

Les champs Titre et Contenu sont efficaces pour afficher les contenus texte de base d'une page ou d'un article, mais il arrive que certains projets requièrent plus de deux champs pour réaliser certaines mise en page.

Par exemple, si l'éditeur exige de pouvoir choisir la couleur de fond de chacune de ses pages, comment lui donner cette possibilité? Un nouveau champ dédié à la couleur de la page sera nécessaire.

Souvent abrégé SCFSecure Custom Fields  est un dérivé récent de Advanced Custom Fields (ACF) qui est l'une des extensions les plus utiles aux développeurs WordPress.

Elle permet d'ajouter plusieurs types de champs et d'en créer autant que désiré. Pour reprendre l'exemple précédent, il serait possible d'ajouter un champs de sélection de couleur (color picker).

Installation

Dans l'onglet extensions (plugins) du tableau de bord, recherchez Secure Custom Fields et repérez l'extension originalement créée par Elliot Condon mais dont l'auteur est maintenant WordPress.org.

Installez et activez là.

Extension Secure Custom Fields Création de champs

Une fois installée, un onglet SCF (ou en anglais Custom Fields) devrait être visible dans la barre latérale servant de menu.

Cliquez ensuite sur Field Groups. À partir de cet onglet, il est possible de créer des nouveaux Groupes de champs (New Field Group) en cliquant sur Ajouter (Add New).

Menu SCF
  1. Nommez votre nouveau groupe de champs.

  2. Le bouton +Ajouter des champs permet d'ajouter autant de champs que désiré.

  3. Pour chaque champs créé, populez les informations requises: titre, nom, type, etc.

    Par exemple, il serait possible de créer un groupe de champ Apparence de la page et de lui ajouter un champs intitulé Couleur de fond constitué d'un sélecteur de couleur.

  1. La boite Location Rules (emplacement) permet de spécifier où ce nouveau groupe de champs devrait-être visible.
    Par exemple, afficher uniquement le groupe de champs Apparence de la page sur les pages de type article.
  1. Ajuster les Réglages si désiré pour configurer l'apparence du groupe de champs dans la page.

  2. Appuyez sur le bouton Save changes (Publier).

Récupération de valeurs

Comme nous avons vu, créer un champ permet à l'éditeur d'ajouter de nouvelles informations sur ses pages, mais pour que ces informations soient utilent, il faut ensuite les récupérer afin de les afficher.

Deux fonctions permettent de les récupérer:

  1. the_field()qui retourne une chaine de caractère.
  2. get_field() qui retourne un objet contenant de multiples valeurs.

Couleur

Les valeurs provenant d'un champ de type Sélecteur de couleur sont sauvegardés sous forme d'une chaine de caractères. Il est sonc possible de les récupérer via la fonction the_field(...).

Par exemple:

<body style="background: <?php the_field('couleur_de_fond'); ?>;"> ... </body> color picker

Texte

Un champ texte peut être créé pour stocker des informations supplémentaires. Ce type de champs est, entre autre, utile lorsqu'une information doit être séparée visuellement du reste du contenu.

Prenons par exemple la page Wikipedia d'un groupe de musique. Si cette page était construite à l'aide de WordPress, le champ titre contiendrait le texte The Offspring et le champs contenu l'ensemble du texte dans la colonne de gauche. Cependant, les éléments dans la colonne de droite proviendraient de champs ACF supplémentaires.

Par exemple, un champ autre nom associé aux pages de type Groupe de musique permettrait à l'éditeur de spécifier si un groupe fut précédemment connu sous un autre nom.

<strong>Autre nom</strong> <?php the_field('autre_nom'); ?> Manic Subsidal??? 🤷‍♂️ text

Liste déroulante

Il est parfois préférable d'offrir à l'éditeur une liste de choix préétablis plutôt qu'un champ texte offrant trop de liberté.

Par exemple, pour ce qui est du pays d'origine, quel devrait-être la valeur pour The Offpring? USA, États-Unis, États Unis d'Amérique, etc. Une liste de choix préétablis règle cette question et offre une cohérence entre les différentes pages.

Il suffit de créer un champ de type Sélection et de lui donner les choix disponibles en format:
Valeur affiché sur le site : Valeur afficher dans l'admin

Par exemple:

🇨🇦 Canada : Canada
🇺🇸 États-Unis : États-Unis
🇫🇷 France : France

Comme pour un champ texte, la valeur peut-être ensuite récupérée via the_field(...).

<strong>Pays d'origine</strong> <?php the_field('pays_dorigine'); ?> select Image

Un champ image permet de stocker des images supplémentaires.

Pour continuer avec la précédente métaphore, le champ d'image par défaut de WordPress, Image mise de l'avant, ou en anglais Preview, servirait à afficher l'image du groupe dans le haut de la colonne de droite. Photo du groupe Offpsriing

Cependant, un champ d'image supplémentaire serait requis afin d'afficher le logo du groupe un peu plus bas.Logo The Offspring


Un champs ACF Logo serait donc créé. Il y aurait ensuite deux façons d'afficher son contenu.

La façon simple avec the_field(…) retournant un url.
Par exemple:

<img src="<?php the_field('logo'); ?>" class="logo">

ou la version plus avancée avec get_field(…) permettant d'obtenir toutes les informations relatives à l'image:

  • url
  • size
  • title
  • alt
  • caption
  • etc.

Ces informations sont enregistrées sour forme d'objet. Il est donc préférable de stocker cet objet dans une variable afin d'accèder à ses sous-propriétés au besoin.

Par exemple, stockons cet objet dans la variable $logo et recréons l'exemple précédent, mais avec l'attribut alt de populé.

<?php $logo = get_field('logo'); $url = $logo['url']; $alt = $logo['alt']; ?> <img src="<?php echo $url; ?>" class="logo" alt="<?php echo $alt; ?>"> image

>>>EXERCICE PRÉSENTÉ EN CLASSE

Export

Secure Custom Fields permet d'exporter la structure de ses groupes de champs afin de pouvoir les importer sur un autre site.

Exportation

Il faut aller dans l'onglet SCF et sélectionner l'option Outils (Tools). À cet endroit dans la colonne de gauche, une liste de boites à cocher permet de choisir les type de post ainsi que les groupes de champs à exporter. Lorsque ce choix est terminé, cliquez sur le bouton Export As JSON afin d'obtenir un fichier JSON contenant lesdites structures.

Attention, cette exportation n’inclut pas les valeurs, uniquement la STRUCTURE des champs.

Importation

Pour importer des groupes de champs, il faut aussi aller dans l'onglet SCF et sélectionner l'option Outils (Tools). Sur cette page, dans la colonne de droite, se trouve un champs permettant de charger un fichier JSON. Importez le fichier désiré permet de recréer une structure de champs SCF d'un projet à un autre.

Assurez-vous que l’extension SCF soit installée sur le nouveau site avant d’importer des type de post et une structure de groupe de champs.