Skip to content

Les pages d'archives

Dans les versions précédentes, nous avions choisi de mettre en place des pages d’archives statiques. Chaque type de contenu disposait, lorsque nécessaire, d’une page d’archive dédiée, référencée via l’attribut t32b_archive dans sa déclaration poet. Les contenus étaient alors récupérés de manière statique à l’aide de WP_Query et de champs ACF dans un ViewComposer dédié, et l’éditeur Gutenberg était désactivé pour ce type de pages.

Dans la V2 du T32B, une nouvelle manière est disponible. Sans supprimer cette méthode historique, vous pouvez maintenant passer par un composant Livewire directement à l'intérieur d'un bloc Gutenberg. L'avantage est qui vous pouvez laisser activé l'éditeur Gutenberg pour votre page d'archive. Le bloc Gutenberg doit être disponible uniquement pour la page d'archive de votre CPT.

Exemple de page d'archive avec un bloc Gutenberg Livewire

Déclaration d'un type de contenu

bash
wp acorn t32b:posttype Event
php
// app/Configurations/PostTypes/event.php
return register_extended_post_type('event', [
    'menu_icon' => 'dashicons-calendar-alt',
    'show_in_rest' => true,
    'supports' => ['title', 'editor', 'thumbnail'],
    't32b_archive' => config('app.options.event'),
]);

Générer un bloc Gutenberg

Pour générer un bloc Gutenberg, vous pouvez utiliser la commande d'ACF Composer

bash
wp acorn acf:block ArchiveEvent

Il est préférable que ce bloc ne soit pas multiple. Au moment de la configuration, décochez cette option.

Il faut activer ce bloc uniquement pour l'archive des événements

php
// app/setup.php l.165
/**
 * Allowed block in 3212 website
 *
 * @return string[]|true
 */
add_filter('allowed_block_types_all', function ($allowed_blocks, $editor_context): array|true {

    $allowed_block_types = app('config')->has('block.allowed_block_types') ? app('config')->get('block.allowed_block_types') : true;

    if (is_array($allowed_block_types)) {
        if ($editor_context->post->ID === config('app.options.archive_post')) {
            $allowed_block_types[] = 'acf/archive-event'; // acf/slug_de_votre_block
        }
    }

    return $allowed_block_types;
}, 10, 2);

Générer le composant Livewire

bash
wp acorn make:livewire ArchiveEvent

Vous pouvez appeler les Queries et Services nécessaire à la mise en place votre page d'archive dans la fonction render de la classe ArchiveEvent du dossier app/Livewire comme vous l'auriez fait pour un ViewComposer.

Modifier le bloc ArchiveEvent

Il suffit d'appeler le composant livewire dans le rendu de votre bloc :

bladehtml

<livewire:archive-event/>

Gestion des événements Livewire

Pour que votre composant soit réactif, il faut utiliser les directives livewire (wire:click par exemple). Vous pouvez prendre comme exemple le composant PostList qui utilise une pagination personnalisée.

Conclusion

Cette documentation se veut volontairement succincte, la documentation officielle de Livewire étant déjà très complète. Nous nous concentrons ici uniquement sur les spécificités liées au T32B, en particulier la déclaration du type de contenu ainsi que l’activation du bloc exclusivement sur la page d’archive.