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.