Get Block Attributes in REST JSON API
-
I am trying to make my block attributes show up in the REST API.
To start, I’ve added the rest_api_init hook to whitelist my block for inclusion.
add_action( 'rest_api_init', function () { if ( ! function_exists( 'use_block_editor_for_post_type' ) ) { require ABSPATH . 'wp-admin/includes/post.php'; } // add Location Block to the WordPress REST API $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 ) { $raw_blocks= parse_blocks( $post['content']['raw'] ); $whitelisted_blocks = []; foreach ($raw_blocks as $raw_block) { if( $raw_block['blockName']=='myplugin/block-map-location' ){ array_push($whitelisted_blocks, $raw_block); } } return $whitelisted_blocks; }, ] ); } } } );
This outputs my raw block content, but the attrs array is empty.
blocks: 0: blockName: "myplugin/block-map-location" attrs: [] innerBlocks:; [] innerHTML: "\n<div class=\"wp-block-myplugin-block-map-location\" aria-label=\"Interactive Map\" role=\"region\"><figure><div class=\"map-pp\" id=\"placepress-map\" data-lat=\"41.50214445\" data-lon=\"-81.6751670486689\" data-zoom=\"13\" data-basemap=\"carto_voyager\"></div><figcaption class=\"map-caption-pp\">This is the map caption.</figcaption></figure></div>\n" innerContent: 0: "\n<div class=\"wp-block-myplugin-block-map-location\" aria-label=\"Interactive Map\" role=\"region\"><figure><div class=\"map-pp\" id=\"placepress-map\" data-lat=\"41.50214445\" data-lon=\"-81.6751670486689\" data-zoom=\"13\" data-basemap=\"carto_voyager\"></div><figcaption class=\"map-caption-pp\">This is the map caption.</figcaption></figure></div>\n"
To solve this, I’ve tried the following, using the example from the Gutenberg Handbook, but it doesn’t seem to have any affect. (Note that in this instance, I am working with a custom “locations” post type and trying to get “lat” and “lon” attributes from my block.)
add_action( 'init', 'register_block_attributes' ); function register_block_attributes() { register_meta( 'post', 'lat', array( 'object_subtype' => 'locations', 'show_in_rest' => true, ) ); register_meta( 'post', 'lon', array( 'object_subtype' => 'locations', 'show_in_rest' => true, ) ); }
I’m obviously missing something but am not finding any answers in the documentation.
Viewing 1 replies (of 1 total)
Viewing 1 replies (of 1 total)
- The topic ‘Get Block Attributes in REST JSON API’ is closed to new replies.