如何禁用wp-admin中的页面标题?

时间:2012-04-04 16:45:08

标签: wordpress title capability

我安装了一个wp-network,用户可以在每个站点中创建页面。

每个页面都在主菜单中占有一席之地,只有一个用户有权创建所有这些菜单。

我想创建一个用户只能编辑页面内容,而不能编辑标题。

如何从特定用户的管理菜单中禁用要编辑的页面标题,或者(更好)功能?

我认为只有这种可能性,即编辑admin css隐藏标题文本框,但我有两个问题:

  1. 我不喜欢隐藏东西。
    1. 我不知道admin css在哪里。
    2. 我知道php,但不知道如何将css hide添加到功能元素中。
  2. How do I want it to be

2 个答案:

答案 0 :(得分:8)

你绝对应该使用CSS隐藏div#titlediv。您希望标题显示在标记中,以便表单提交,验证等继续顺利运行。

实施此解决方案时需要了解的一些要素:

  1. current_user_can()是一个布尔函数,用于测试当前登录用户是否具有功能或角色。
  2. 您可以通过admin_head操作添加样式,或者如果您想将其存储在单独的CSS文件中,则使用wp_enqueue_style
  3. 这是一个代码片段,可以完成这项工作,将它放在您认为合适的位置,在您的主题中使用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)并将其分配给我想要的角色。