我安装了一个wp-network,用户可以在每个站点中创建页面。
每个页面都在主菜单中占有一席之地,只有一个用户有权创建所有这些菜单。
我想创建一个用户只能编辑页面内容,而不能编辑标题。
如何从特定用户的管理菜单中禁用要编辑的页面标题,或者(更好)功能?
我认为只有这种可能性,即编辑admin css隐藏标题文本框,但我有两个问题:
答案 0 :(得分:8)
你绝对应该使用CSS隐藏div#titlediv。您希望标题显示在标记中,以便表单提交,验证等继续顺利运行。
实施此解决方案时需要了解的一些要素:
这是一个代码片段,可以完成这项工作,将它放在您认为合适的位置,在您的主题中使用functions.php。如果您在网络中使用不同的主题,我会把它放在网络激活的插件中:
<?php
add_action('admin_head', 'maybe_modify_admin_css');
function maybe_modify_admin_css() {
if (current_user_can('specific_capability') {
?>
<style>
div#titlediv {
display: none;
}
</style>
<?php
}
}
?>
答案 1 :(得分:0)
我解决了这个问题,就像有人来到这里使用搜索引擎一样,我发布了解决方案。
做了一些研究,我找到了插入标题文本框的代码部分,我找到了a function to know if a user has a certain capability。
添加标题文本框的文件是/wp-admin/edit-form-advanced.php。这是文本框之前的行
if ( post_type_supports($post_type, 'title') )
我把它改成了
if ( post_type_supports($post_type, 'title') and current_user_can('edit_title') )
这样,只有当用户具有名为“edit_title”的功能时才会添加文本框
当这个IF块结束后几行时,我补充道:
else echo "<h2>".esc_attr( htmlspecialchars( $post->post_title ) )."</h2>";
当用户没有“edit_title”功能时,查看页面标题但不编辑它。
然后我已经安装了plugin to edit user capabilities and roles,帮助我创建一个新功能(edit_title)并将其分配给我想要的角色。