diff --git a/src/wp-includes/post.php b/src/wp-includes/post.php index 48906cd89bc89..3716fceef04d8 100644 --- a/src/wp-includes/post.php +++ b/src/wp-includes/post.php @@ -8041,14 +8041,14 @@ function use_block_editor_for_post_type( $post_type ) { /** * Registers any additional post meta fields. * - * @since 6.3.0 Adds sync_status meta field to the wp_block post type so an unsynced option can be added. + * @since 6.3.0 Adds `wp_pattern_sync_status` meta field to the wp_block post type so an unsynced option can be added. * * @link https://github.com/WordPress/gutenberg/pull/51144 */ function wp_create_initial_post_meta() { register_post_meta( 'wp_block', - 'sync_status', + 'wp_pattern_sync_status', array( 'sanitize_callback' => 'sanitize_text_field', 'single' => true, diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-blocks-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-blocks-controller.php index cd2e63d7c5b22..6028f42b37f4a 100644 --- a/src/wp-includes/rest-api/endpoints/class-wp-rest-blocks-controller.php +++ b/src/wp-includes/rest-api/endpoints/class-wp-rest-blocks-controller.php @@ -40,6 +40,7 @@ public function check_read_permission( $post ) { * Filters a response based on the context defined in the schema. * * @since 5.0.0 + * @since 6.3 Adds the `wp_pattern_sync_status` postmeta property to the top level of response. * * @param array $data Response data to filter. * @param string $context Context defined in the schema. @@ -56,6 +57,9 @@ public function filter_response_by_context( $data, $context ) { unset( $data['title']['rendered'] ); unset( $data['content']['rendered'] ); + // Add the core wp_pattern_sync_status meta as top level property to the response. + $data['wp_pattern_sync_status'] = isset( $data['meta']['wp_pattern_sync_status'] ) ? $data['meta']['wp_pattern_sync_status'] : ''; + unset( $data['meta']['wp_pattern_sync_status'] ); return $data; } diff --git a/tests/phpunit/tests/rest-api/rest-blocks-controller.php b/tests/phpunit/tests/rest-api/rest-blocks-controller.php index 48208d2175ba3..1cdd3474dd174 100644 --- a/tests/phpunit/tests/rest-api/rest-blocks-controller.php +++ b/tests/phpunit/tests/rest-api/rest-blocks-controller.php @@ -220,4 +220,39 @@ public function test_content() { $data['content'] ); } + + /** + * Check that the `wp_pattern_sync_status` postmeta is moved from meta array to top + * level of response. + * + * @ticket 58677 + */ + public function test_wp_patterns_sync_status_post_meta() { + register_post_meta( + 'wp_block', + 'wp_pattern_sync_status', + array( + 'single' => true, + 'type' => 'string', + 'show_in_rest' => array( + 'schema' => array( + 'type' => 'string', + 'properties' => array( + 'sync_status' => array( + 'type' => 'string', + ), + ), + ), + ), + ) + ); + wp_set_current_user( self::$user_ids['author'] ); + + $request = new WP_REST_Request( 'GET', '/wp/v2/blocks/' . self::$post_id ); + $response = rest_get_server()->dispatch( $request ); + $data = $response->get_data(); + + $this->assertArrayHasKey( 'wp_pattern_sync_status', $data ); + $this->assertArrayNotHasKey( 'wp_pattern_sync_status', $data['meta'] ); + } }