Catégories
Technique

Exposez la structure des blocs Gutenberg de vos contenus WordPress

Gutenberg utilise un système de bloc qui sont assemblés pour aboutir à l’article final. Si, comme moi, vous avez besoin d’accéder à l’arbre des blocs Gutenberg depuis l’API, voici un petit bout de code qui vous sera fort utile.

J’ai récemment du étudier le fonctionnement de l’API WordPress couplée à Gutenberg. Par défaut, le contenu qui est accessible depuis l’API est toujours la version interprétée.

Gutenberg utilise un système de bloc qui sont assemblés pour aboutir à l’article final. Si, comme moi, vous avez besoin d’accéder à l’arbre des blocs Gutenberg depuis l’API, voici un petit bout de code qui vous sera fort utile :

add_action(
    'rest_api_init',
    function ( )
    {

        if ( ! function_exists( 'use_block_editor_for_post_type' ) )
        {
            require ABSPATH . 'wp-admin/includes/post.php';
        }

        $post_types = get_post_types_by_support( [ 'editor' ] );
        foreach ( $post_types as $post_type )
        {
            if ( use_block_editor_for_post_type( $post_type ) )
            {
                register_rest_field(
                    $post_type,
                    'blocks',
                    [
                        'get_callback' => function ( array $post )
                        {
                            return parse_blocks( $post['content']['raw'] );
                        }
                    ]
                );
            }
        }
    }
);

Vous pouvez changer la structure retournée par parse_blocks en utilisant le filtre block_parser_class et l’objet WP_Block_Parser.

Par Stéphane Hulard

Passionné par les nouvelles technologies, la veille est mon quotidien. Je mets au service mon expertise et ma curiosité pour la conceptions de solutions techniques pérennes.
Consultant, speaker et formateur je manipule au quotidien PHP, Symfony, Laravel, SolR, ElasticSearch, JavaScript, HTML5, WordPress...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.