问题描述
是否有一个插件可以限制 non-admin 用户只有现有的标签?我可以为此使用类别,但是很难显示大量 (〜 1000) 的标签。
最佳解决方案
如果您还没有创建标签,可以使用 「批量添加标签」 插件 – http://wordpress.org/extend/plugins/bulk-add-tags/
然后限制除管理员之外的所有用户通过”New Post” 屏幕添加新标签,将此代码添加到您的主题的 functions.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” 页面的许多区域。只需在 { display: none; }
之前找到并添加元素的 div 类或 ID,并用逗号分隔。如果您不熟悉,可以使用 Firebug 插件与 Firefox 或简单的 right-click,并在 Chrome 中选择”Inspect Element” 。
我喜欢这种方法在许多插件,因为它不会完全从 Wordpress 中删除功能,功能只是隐藏的用户不需要它。
次佳解决方案
这些解决方案都没有完全符合我需要允许 non-admin 用户使用现有标签的一个帖子,但不会创建新的标签。所以我创建了以下解决方案,它的工作原理很好 – 尽管它没有向用户提供他们的标签未被添加的任何反馈 (它只是立即撤消标签创建):
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);
}
}
}
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。