【问题标题】:How to disable page's title in wp-admin from being edited?如何禁止编辑 wp-admin 中的页面标题?
【发布时间】:2021-05-23 03:40:57
【问题描述】:

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

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

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

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

我认为只有一种可能性,那就是编辑 admin css 来隐藏标题文本框,但我有两个问题:

  1. 我不喜欢用 css 隐藏东西。
    1. 我不知道管理员 css 在哪里。
    2. 我知道 php,但不知道如何为元素添加 css 隐藏功能。

【问题讨论】:

    标签: wordpress title capability


    【解决方案1】:

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

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

    1. current_user_can() 是一个布尔函数,用于测试当前登录用户是否具有能力或角色。
    2. 您可以通过 admin_head 操作在线添加样式,如果您想将其存储在单独的 CSS 文件中,也可以使用 wp_enqueue_style

    这里有一个代码 sn-p 可以完成这项工作,把它放在你认为合适的地方,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
        }
    }
    ?>
    

    【讨论】:

    • 如果有 CSS 选择器来引用菜单中的条目,这可能会隐藏管理菜单栏中的页面>新页面菜单。你知道那个选择器是否存在吗?
    【解决方案2】:

    我解决了问题,如果有人使用搜索引擎来到这里,我发布解决方案。

    做了一些研究,我找到了插入标题文本框的代码部分,我找到了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)并将其分配给我想要的角色。

    【讨论】:

    • 你不应该编辑 Wordpress 的核心文件。未来的更新将删除此 hack。
    • 你是对的,两年后我看到这个答案,我认为这很愚蠢。但我知道我学到了多少。 StackOverflow 很棒。
    • 现在 7 年后,感觉更蠢了。随意投反对票!请继续学习如何(不)做事:)
    • 9.5 年后......我发现这个解决方案破坏了 wp 升级,但实际上解决了原来的问题。如果 wordpress 没有这样做的“钩子”并且取决于这样做的紧迫性/重要性,我可能会批准这样的更改,尽管我会倾向于 CSS 解决方案。
    猜你喜欢
    • 1970-01-01
    • 2023-04-09
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    • 2019-04-03
    • 1970-01-01
    相关资源
    最近更新 更多