是否有一个插件可以限制非管理员用户只使用现有的标签?我本可以使用类别来实现这一点,但很难用大量(约1000个)标签来显示。
将非管理员用户限制为现有标记的插件
如果尚未创建标记,可以使用“批量添加标记”插件-http://wordpress.org/extend/plugins/bulk-add-tags/
然后,要限制除管理员以外的所有用户通过“new Post”屏幕添加新标签,请将此代码添加到主题的功能中。php文件:
//Hide Post Page Options from all except Administrator
if (!current_user_can(\'administrator\')){
function hide_post_page_options() {
global $post;
$hide_post_options = "<style type=\\"text/css\\"> .jaxtag { display: none; }</style>";
print($hide_post_options);
}
add_action( \'admin_head\', \'hide_post_page_options\' );
}
这只会对除管理员以外的所有用户隐藏用于输入新标签的框。实际上,我使用这种方法来隐藏“New Post”页面的许多区域。只需在之前查找并添加元素的div类或id{ display: none; }
并用逗号分隔。如果您不熟悉Firefox,可以将Firebug插件与Firefox配合使用,或者只需右键单击并选择Chrome中的“Inspect Element”。
与许多插件相比,我更喜欢这种方法,因为它不会完全从Wordpress中删除功能,功能只是对不需要它的用户隐藏。
这些解决方案都没有达到我所需要的效果,允许非管理员用户在帖子上使用现有标记,但不创建新标记。因此,我创建了以下解决方案,效果很好-尽管它没有向用户提供任何没有添加标签的反馈(它实际上只是立即撤消标签创建):
add_action(\'create_term\',\'undo_create_term\',10, 3);
function undo_create_term ($term_id, $tt_id, $taxonomy) {
if ( !current_user_can( \'administrator\' ) ) {
if($taxonomy == \'post_tag\') {
wp_delete_term($term_id,$taxonomy);
}
}
}
你的问题让我很感兴趣。我可以看到这种情况有很大的用处,所以我会尽我所能帮助你找到答案。
这是另一个解决方案,不完全是您在对另一个答案的评论中提到的,但它确实让用户更容易找到他们想要的标签,因为标签是按字母顺序列出的。
管理标签功能插件-http://wordpress.org/extend/plugins/manage-tags-capability/
此外,应注意:此方法允许用户从所有可用标记中进行选择。我刚刚意识到,另一种方法只允许用户从“最常用”的标签中进行选择。
Wordpress在键入标签时已经可以自动预测,因此本质上,我们需要找到一种方法,允许用户键入他们想要的标签,但如果用户找不到标签,就不能添加新的标签。
这就是我解决相同问题的方法(在主题的functions.php中):
/* Removing Tags for users */
if (is_admin()) :
function my_remove_meta_boxes() {
if(!current_user_can(\'publish_posts\')) {
remove_meta_box(\'tagsdiv-post_tag\', \'post\', \'normal\');
}
}
add_action( \'admin_menu\', \'my_remove_meta_boxes\' );
endif;
首先我们检查它是否是管理区域,然后我们检查用户是否可以发布帖子(通常是管理员和编辑),然后我们使用remove\\u meta\\u box执行我们的魔术。