我已经成功地创建了一个自定义Gutenberg块,它可以修改多个元数据和本机post数据。除此之外,我还构建了一个包含自定义分类法所有术语的下拉列表(使用show_in_rest
设置为TRUE
). 下拉菜单效果很好,但如何将选择内容保存回帖子?
<SelectControl
label="My Dropdown"
options={ options }
value={ value }
onChange={ v => update( v ) }
/>
每当我在下拉列表中选择另一个值时,将执行以下函数:
const update = ( t ) => {
// The selected option can have a value of zero (= assign no term)
const ids = [];
if ( t.value ) {
ids.push( t.value );
}
// the following line does not work
// editEntityRecord( \'postType\', \'my_custom_post_type\', post.id, { \'my_custom_taxonomy\': [ t.value ] } );
// nor does this line
editPost( {
my_custom_taxonomy: [ t.value ]
});
// ... updating value in the state in order to make the dropdown work
}
我甚至不确定我是否应该使用
editPost
或
editEntityRecord
.
How can I save the new selected term id to the post?
SO网友:uruk
我找到了(啊!)。
我就快到了,但我犯了一个愚蠢的错误。内部update
-函数,参数t
不是对象,而是值本身:
const update = ( t ) => {
// t is the selected term\'s ID as a string. Transform it to an integer
const x = parseInt( t, 10 );
// Update the assigned term or remove it, when zero
editEntityRecord( \'postType\', \'my_custom_post_type\', post.id, {
my_custom_taxonomy: x ? [ x ] : []
} );
// ...
}