Skip to content

Add an edit_global_styles user capability to limit access to Global StylesΒ #56299

Open
@ndiego

Description

What problem does this address?

By default, the Site Editor is restricted to Administrators. You can enable Site Editor access by granting any user role, or a new role, the capability of edit_theme_options. Here is an example:

function create_custom_site_editor_role() {
    $capabilities = array(
        'read' => true,
        'edit_theme_options' => true,  // Allows access to the Site Editor and appearance settings
    );
    add_role( 'site_editor', 'Site Editor', $capabilities );
}
add_action( 'init', 'create_custom_site_editor_role' );

This example user role is extremely restrictive, but as soon as the user accesses the Site Editor they have a lot of power to modify they site. Certain things won't work, like adding/modifying patterns, adding templates, adding pages, etc. It takes a bit of trial and error to figure out what does.

This role does, however, have near complete control over Global Styles, which might not be ideal in specific scenarios.

Consider the situation where I have built a site for a client. The client wants some of their users to have limited access to the Site Editor so they can modify templates, pages, and patterns, but the users should not have access to modify the styling of the site. A designer configured the styling to match the client's brand guidelines.

I want to be able to create a new user role for the client that provides access to the Site Editor but restricts access to Global Styles, perhaps with a capability called edit_global_styles.

What is your proposed solution?

Create a new user capability called edit_global_styles (or something similar), which would allow the creation of a user role like the following.

function create_custom_site_editor_role() {
    $capabilities = array(
        'read' => true,
        'edit_theme_options' => true,  // Allows access to the Site Editor and appearance settings
        'edit_global_styles' => false // Restrict access to Global Styles
    );
    add_role( 'site_editor', 'Site Editor', $capabilities );
}
add_action( 'init', 'create_custom_site_editor_role' );

This capability would have the following effect.

Site Editor sidebar

Before After
image image

Global Styles panel

Before After
image image

Push to Global Styles panel

Before After
image image

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    [Feature] ExtensibilityThe ability to extend blocks or the editing experience[Feature] Site EditorRelated to the overarching Site Editor (formerly "full site editing")[Focus] Blocks AdoptionFor issues that directly impact the ability to adopt features of Gutenberg.[Type] EnhancementA suggestion for improvement.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions