我安装了一个 wp-network,用户可以在每个站点中创建页面。
这些页面中的每一个都在主菜单中占有一席之地,并且只有一个用户有权创建所有此菜单。
我想创建一个用户只能编辑页面的内容,但不能编辑标题。
如何禁用要从特定用户的管理菜单编辑的页面标题,或者(更好)功能?
我认为只有一种可能性,那就是编辑 admin css 来隐藏标题文本框,但我有两个问题:
- 我不喜欢 css-hide 东西。
- 我不知道管理员CSS在哪里。
- 我知道 php,但不知道如何为元素添加 css 隐藏功能。
我安装了一个 wp-network,用户可以在每个站点中创建页面。
这些页面中的每一个都在主菜单中占有一席之地,并且只有一个用户有权创建所有此菜单。
我想创建一个用户只能编辑页面的内容,但不能编辑标题。
如何禁用要从特定用户的管理菜单编辑的页面标题,或者(更好)功能?
我认为只有一种可能性,那就是编辑 admin css 来隐藏标题文本框,但我有两个问题:
您绝对应该使用 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
}
}
?>
我解决了这个问题,只要有人使用搜索引擎来到这里,我就会发布解决方案。
做了一些研究,我找到了插入标题文本框的代码部分,并且我找到了一个函数来了解用户是否具有某种能力。
添加标题文本框的文件是/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”能力时,查看页面标题但不编辑它。
然后我已经安装了一个插件来编辑用户功能和角色,它可以帮助我创建一个新功能(edit_title)并将其分配给我想要的角色。