J'essaie de suivre les instructions du manuel Manuel de Gutenberg pour créer un bloc qui peut modifier les métadonnées d'un message.
Bien que, lorsque j'essaie d'utiliser la fonction setAttributes
de props
pour enregistrer les nouvelles données, celles-ci ont persisté sur la page, mais ne sont pas réellement sauvegardées dans la base de données, car je crois que le manuel l'indique s'il le devrait. la source est meta
. Je dois manquer quelque chose, mais je ne peux pas trouver une ressource pour aider.
php:
$args = ...
register_post_type('event', $args);
register_meta('event', 'event_location', [
'show_in_rest' => true,
'single' => true,
'type' => 'string'
]);
javascript:
registerBlockType('my-plugin/event-location', {
title: 'Event Location',
category: 'widgets',
attributes: {
location: {
type: 'string',
source: 'meta',
meta: 'event_location'
}
},
edit ({ className, attributes, setAttributes }) {
const { location } = attributes
function updateContent (e) {
setAttributes({ location: e.target.value })
}
return el(
'p',
{ className: className },
el(
'input',
{ value: location, onChange: updateContent }
)
)
},
save () {
return null
}
})
Je pense avoir trouvé la réponse ici . Le premier argument de register_meta
n'est pas post type, mais object_type
, ce qui dans mon cas devrait être post
plutôt que taxonomy
ou comment
. La description de la fonction, trouvée ici , indique qu'à partir de WordPress 4.9.2, le paramètre correct est post
. Une fois que j'ai changé, tout a fonctionné.
register_meta('post', 'event_location', [
'show_in_rest' => true,
'single' => true,
'type' => 'string'
]);
Aussi, ici est une question de Github liée au même problème.