Answers:
您可以挂钩pre_insert_term
,检查分类以及用户是否具有指定角色,如下所示:
function disallow_insert_term($term, $taxonomy) {
$user = wp_get_current_user();
if ( $taxonomy === 'post_tag' && in_array('somerole', $user->roles) ) {
return new WP_Error(
'disallow_insert_term',
__('Your role does not have permission to add terms to this taxonomy')
);
}
return $term;
}
add_filter('pre_insert_term', 'disallow_insert_term', 10, 2);
这样可以防止用户插入新词条,但允许他们搜索新词条并将其添加到帖子中。
请注意,在后期编辑屏幕上,用户可以输入不存在的术语名称,然后按Enter或单击添加按钮,这会将术语添加到DOM,但是,在此之前,术语不会添加到数据库中。用户发布或更新帖子,届时该词将被禁止。
post_tag
而不是其他某些分类法,例如categories
或某些自定义分类法)?
wp-config.php
设置以下常量,define('WP_DEBUG', true);
, define('WP_DEBUG_LOG', true);
,并 define('WP_DEBUG_DISPLAY', false);
随后在功能上面的代码中,登录到一个呼叫error_log($taxonomy);
,另一呼叫error_log(implode(', ', $user->roles));
,然后再添加一个标签更新帖子,这将然后创建一个debug.log
在文件wp-content
目录。您需要确定是否正在调用此函数,以及是否正确输入了条件语句,因为此回调对我有用。