我是一个插件的作者Radio Buttons for taxonomies 它将某些分类法元框(经典)和侧栏(块编辑器)转换为使用单选按钮而不是复选框来选择术语。
与复选框不同,您可以简单地取消选中复选框,如果您想让某人有机会;撤消(&Q);您需要提供额外的;“术语”;他们可以选择,然后不保存任何值。如果你愿意的话,这是一种伪术语。
因此,我过滤get_terms()
并添加一个值为0的假术语。保存时,我检查术语的值是否为0,并确保没有为该帖子保存术语。
为了将其简化为所有人都可以测试的内容,下面是一个示例代码片段:
/**
* Add new 0 or null term in metabox and quickedit
* this will allow users to "undo" a term if the taxonomy is not required
*
* @param array $terms Array of found terms.
* @param array $taxonomies An array of taxonomies.
* @param array $args An array of get_terms() arguments.
* @return array
*/
function kia_get_terms( $terms, $taxonomies, $args ) {
if ( isset( $args[\'fields\'] ) && $args[\'fields\'] == \'all\' ) {
$no_term = esc_html__( \'No term\', \'my-text-domain\' );
$uncategorized = (object) array(
\'term_id\' => 0,
\'count\' => 0,
\'description\' => \'\',
\'name\' => $no_term,
\'slug\' => \'0\',
\'taxonomy\' => \'category\',
\'parent\' => \'0\',
);
array_push( $terms, new WP_Term( $uncategorized ) );
}
return $terms;
}
add_filter( \'get_terms\', \'kia_get_terms\', 10, 3 );
在经典编辑器中,这很好。但是在块编辑器中(仍然使用
get_terms()
通过REST API。。。这会导致
Uncaught (in promise) error
似乎陷入了一个无限循环。如何防止此循环?