Utilisation
Les composants dans notre thème WordPress sont conçus pour être flexibles et réutilisables à travers différents types de contenu. Pour ajouter et gérer des composants dans nos types de post personnalisés, nous utilisons une approche centrée sur Advanced Custom Fields (ACF).
Gestion des Composants par Type de Post
Les composants disponibles pour un type de post particulier sont définis dans des fichiers PHP spécifiques situés dans le répertoire /inc/fieldGroups/
. Par exemple, pour les pages standards, nous avons un fichier pageComponents.php
, tandis que pour les expositions, nous utilisons expositionsComponents.php
. Cela nous permet de contrôler finement quels composants sont accessibles en fonction du contenu de la page ou du post courant.
Exemple d'Inclusion de Composants pour des Pages
Dans /themes/<votre-projet>/inc/fieldGroups/pageComponents.php
, nous enregistrons un groupe de champs ACF qui détermine quels composants peuvent être ajoutés à une page. Voici un exemple de la manière dont les composants sont enregistrés pour les pages :
use ACFComposer\ACFComposer;
use Flynt\Components;
/**********************************************************************************/
// Get Page components
/**********************************************************************************/
add_action('Flynt/afterRegisterComponents', function () {
ACFComposer::registerFieldGroup([
'name' => 'pageComponents',
'title' => 'Page Components',
'style' => 'seamless',
'fields' => [
[
'name' => 'pageComponents',
'label' => 'Page Components',
'type' => 'flexible_content',
'button_label' => 'Ajouter un élément',
'wpml_cf_preferences' => 1, // 1:copy, 2:translatable, 3:copy-once
'layouts' => [
Components\Accueil\getACFLayout(),
Components\Header\getACFLayout(),
Components\Intro\getACFLayout(),
Components\GrilleArticles\getACFLayout(),
Components\Wysiwyg\getACFLayout(),
Components\Image\getACFLayout(),
Components\Gallerie\getACFLayout(),
Components\Accordeon\getACFLayout(),
Components\Mosaique\getACFLayout(),
Components\Connexion\getACFLayout(),
],
]
],
'location' => [
[
[
'param' => 'post_type',
'operator' => '==',
'value' => 'page'
],
],
[
[
'param' => 'post_type',
'operator' => '==',
'value' => 'actualites'
],
],
]
]);
});
Dans ce code, ACFComposer::registerFieldGroup()
crée un groupe de champs flexible qui apparaîtra dans l'éditeur de post WordPress pour le type de post page
. Les layouts dans le tableau de configuration représentent les différents composants que les éditeurs peuvent ajouter à une page. Chaque composant est représenté par une fonction getACFLayout()
, qui retourne la configuration ACF nécessaire pour ce composant.
Les composants sont inclus de manière conditionnelle grâce à la propriété location, qui assure que ce groupe de champs n'apparaît que pour les page
et les postes de type actualites
.
Pour ajouter un composant, il vous suffit d'ajouter une ligne comme Components\Gallerie\getACFLayout(),
et de remplacer (ici) Gallerie
par le nom de votre nouveau composant.
Ressources
- Documentation Github Flynt WP : Field groups