Update
实际上,有一种方法可以将每个分类法定义一个术语作为默认术语,从而使其在管理GUI中不可删除。
WP_Terms_List_Table
查找选项get_option( \'default_\' . $this->screen->taxonomy )
.
因此,如果您有一个名为genre
, 您必须设置选项default_genre
使用要保护的术语的术语id,以防通过管理GUI删除:
$taxonomy = \'genre\';
$key = get_option( \'default_\' . $taxonomy );
$term = get_term_by( \'name\', \'Your default genre term\', $taxonomy );
if ( empty( $key ) && $term )
update_option( $key, $term->term_id );
tl;dr在我的第一个回答中,我错过了这个功能。但能力处理的描述仍然有效。
first answer
在这一点上,这是不可能的。那是因为
WP_Terms_List_Table
所有能力检查如下:
current_user_can( $tax->cap->delete_terms );
这意味着,所有视图检查都是,如果用户有权按此类别整体删除术语。如果函数调用如下所示,则有可能:
current_user_can( $tax->cap->delete_terms, $tag )
在哪里
$tag
将是术语对象。
在这种情况下,您可以轻松过滤map_meta_cap
(其中通过了能力检查和第二个参数)以撤销删除特定术语的权限。
顺便说一下,这是WP_Posts_List_Table
, 因此,可以检查每个帖子的功能。
目前我看到的唯一方法是,注册一个没有默认管理UI元素的分类法,并构建一个自定义管理页面来根据需要管理术语。