古腾堡:如何将自定义分类的相关术语更新到当前帖子

时间:2021-11-23 作者:uruk

我已经成功地创建了一个自定义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 
}
我甚至不确定我是否应该使用editPosteditEntityRecord.

How can I save the new selected term id to the post?

1 个回复
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 ] : [] 
    } );
    
    // ... 
}

相关推荐