WordPress - 自定义用户角色 - 在没有 insert/update/delete 的情况下授予来宾访问 edit.php

WordPress - Custom user role - grant guest access to edit.php without insert/update/delete

我在一个网站上工作,我想向客户展示产品的演示版。 为此,他们可以使用来宾帐户登录,我已按如下方式创建了此角色

add_role('guest', __('Guest'), array('read'=> true));

当我以访客身份登录时,我被重定向到并看到 overview-page /admin.php?page=my_overview,所以这确实有效,但是当访客单击此概览中的任何项目时,我收到一条消息:您没有访问该页面的权限。

这些项目引用的页面如下:/profile.php /edit.php /users.php /admin.php 由于使用这些页面是我产品功能的基本部分,我想 授予来宾帐户访问这些页面的权限,但不要让他们 insert/update/delete 任何数据 显示在这些页面上。

我试过添加多个不同的权限i.e. edit_posts, edit_private_posts, edit_private_pages, read_private_posts, read_private_pages,但我无法让它正常工作。

我想在不使用任何插件的情况下获得具有特定权限的访客帐户。基本上我想创建一个可以像作者一样做的用户,但在我的演示站点上没有任何 INSERTs/UPDATEs/DELETEs 到数据库

我不知道这是否可行,但我们将不胜感激。

我明白了,我只是创建了一个角色,并没有给它添加任何能力。 我缺少的代码现在可以正常工作了:

function add_capability() {
    // gets the author role
    $role = get_role( 'guest' );
    // This only works, because it accesses the class instance.
    $role->add_cap( 'edit_others_posts' ); 
    $role->add_cap( 'read_post' ); 
    $role->add_cap( 'edit_posts' ); 
}
add_action( 'admin_init', 'add_capability');