仅授予ASSIGN_TERMS功能时,仍可添加分类术语

时间:2021-09-17 作者:mozboz

我正在使用以下内容设置分类法的功能:

$assoc_tax->capabilities[\'manage_terms\'] = "zzz";
$assoc_tax->capabilities[\'edit_terms\'] = "zzz";
$assoc_tax->capabilities[\'delete_terms\'] = "zzz";
$assoc_tax->capabilities[\'assign_terms\'] = "edit_posts";
并注册:

register_taxonomy( \'association\', [\'activity\', \'job\'], $assoc_tax );
其中活动和作业是两个CPT。

在添加新的CPT时,仍然允许用户为此分类法添加新的术语,看起来情况似乎不应该如此。

我是做错了什么,还是错过了什么?

1 个回复
SO网友:Jacob Peattie

就能力而言,创建新术语和将其分配到职位之间没有区别。因此,仅通过功能不可能只允许用户分配预定义的术语。这可能源于UI,尤其是标签,它是围绕着在写文章时创建术语而设计的。UI没有仅选择状态。

自定义功能行为的常用方法是使用map_meta_cap 过滤器也不起作用。这是因为没有可靠的方法可以知道assign_terms 是用于指定术语或创建术语的检查。

您唯一的选择可能是实现自己的自定义UI,后端层可以在检查自己的自定义功能后处理创建术语的请求。

相关推荐

未定义的偏移量:1067行的>[...]/wp-includes/capabilities.php中的0

嘿,我在我的localhost设置中得到了这个错误消息,但只有在启用Genesis框架的情况下;WordPress二十一行。当我想创建一个新帖子时,就会发生这种情况。如果我刷新页面,错误会重复,但帖子本身会被创建,一切似乎都很好。有人知道这是什么原因吗?Notice: Undefined offset: 0 in /var/www/secret/htdocs/wp-includes/capabilities.php on line 1067 Notice: Undefined offset: 0