自定义用户角色中的添加,编辑,删除页面功能

时间:2019-03-01 20:48:43

标签: php wordpress

尝试在Wordpress自定义用户角色中添加功能来“添加,编辑和删除页面”。

我正在下面创建一个自定义用户角色,即“ sub admin ”。我正在尝试授予对所有“页面”功能的访问权限;但即使识别出以下内容,也无法正常工作。 (无“添加页面,显示编辑当前页面的标签”。

也许还要注意;我正在尝试通过自定义子主题的/function.php文件进行此操作。该角色在以下代码(即Sub Admin)之后显示在WP仪表板中,但是我无法成功访问页面。

add_role(
    'sub_admin',
    __( 'Sub Admin' ),
    array(
        'read'         => true,  
        'edit_posts'   => true,
        'publish_posts' => true,
        'edit_pages'   => true,
        'edit_others_pages' => true,
        'publish_page' => true,
        'edit_pages'=>true,
        'edit_published_pages'=>true,
        'publish_pages'=>true,
        'delete_pages'=>true,
        'delete_others_pages'=>true,
        'delete_published_pages'=>true,
    )
);

1 个答案:

答案 0 :(得分:0)

请尝试通过以下方法解决您的问题

请确保从add_role获得结果已经创建了您的角色

$result = add_role(/*your args*/);
if ( null !== $result ) {
  echo 'Yay! New role created!';
}
else {
      echo 'Oh... the basic_contributor role already exists.';
}

如果还不行。请确保在尝试编辑页面时具有此sub_admin角色

如果问题仍然存在,请了解wordpress开发人员指南通知

  

在首次调用add_role()之后,该角色及其功能   将存储在数据库中!

     

顺序调用无济于事:包括更改功能   列表,这可能不是您期望的行为。

也许您需要先remove_role(),然后再add_role。 也许您是第一次创建角色而没有某些功能。

另外,请尝试使用init操作添加角色

function wporg_simple_role()
{
    remove_role('sub_admin');
    // or add_role('sub_admin');
}


add_action('init', 'wporg_simple_role');

也许没有编辑角色,所有管理员功能都是

activate_plugins
delete_others_pages
delete_others_posts
delete_pages
delete_posts
delete_private_pages
delete_private_posts
delete_published_pages
delete_published_posts
edit_dashboard
edit_others_pages
edit_others_posts
edit_pages
edit_posts
edit_private_pages
edit_private_posts
edit_published_pages
edit_published_posts
edit_theme_options
export
import
list_users
manage_categories
manage_links
manage_options
moderate_comments
promote_users
publish_pages
publish_posts
read_private_pages
read_private_posts
read
remove_users
switch_themes
upload_files
customize
delete_site

也许管理栏也取决于manage_options。 您可以通过关闭非管理页面来删除manage_options功能

function change_role() {
    global $wp_roles;

    if ( ! is_admin() ) {
        return;
    }

    // if not admin page - you could temporary remove manage capabilities from 
    // sub_admin role


}

add_action('wp', 'change_role');