php 无法将WP_Role转换为字符串时如何向其添加权能

xu3bshqb  于 2023-02-28  发布在  PHP
关注(0)|答案(1)|浏览(87)

我在尝试向我的两个用户角色添加新权能时收到此错误:
Error: Object of class WP_Role could not be converted to string ... on line 67
我尝试添加的功能将允许用户看到我们在WP设置中构建的自定义页面。这是我编写的用于填充角色的代码:

public static function add_csv_capability():void {
        $rolesToPopulate = array((get_role( 'administrator' )), (get_role( 'editor' )));
        $roles = array_fill_keys(($rolesToPopulate),NULL);
        echo $roles;
        
        foreach ($roles as $role) {
            if ($role) {
                $role->add_cap('use_csv_uploader');
            }
        }
    }

有人问this是否能回答我的问题,this回答了,也回答了,它解释了错误是什么,但现在我知道了错误是什么,我需要弄清楚如何让这段代码完成我想要的工作,即允许我向多个角色添加功能。
你能给予的任何帮助都将不胜感激。
谢谢!

o0lyfsai

o0lyfsai1#

首先,创建一个角色名称数组,然后使用array_fill_keys()创建一个关联数组,将这些角色名称作为键,将null作为值。然后循环遍历此数组,并使用get_role()检索相应的WP_Role对象,然后将功能添加到该角色。
因此,您可以使用角色名称数组而不是WP_Role对象数组,如下所示

public static function add_csv_capability():void {
    $rolesToPopulate = array('administrator', 'editor');
    $roles = array_fill_keys($rolesToPopulate, NULL);
    
    foreach ($roles as $role) {
        if ($role) {
            $role_obj = get_role($role);
            $role_obj->add_cap('use_csv_uploader');
        }
    }
}

我希望这能帮助你解决你所面临的问题。

相关问题