Post meta is invisible to the block editor unless it is registered with a type and exposed to the REST API.
register_post_meta( 'product', 'turkerdev_sku', array(
'type' => 'string',
'single' => true,
'show_in_rest' => true,
'sanitize_callback' => 'sanitize_text_field',
'auth_callback' => function (): bool {
return current_user_can( 'edit_posts' );
},
) );
show_in_rest makes it readable and writable by anybody who can edit the post, which is why auth_callback is not optional — the default permits any user who can edit the post to write any registered meta. For an array or object value, show_in_rest must be an array containing a schema rather than true, and passing true produces a silent failure where the meta simply does not appear. That asymmetry is the source of most of the confusion.