用户角色和功能保存在数据库中,因此一旦使用add_role()
它保存了,然后下一次加载WordPress将知道该角色,就像内置角色一样。
现在如果你看看函数add_role()
更具体地说at line 141 您将看到,如果var$use_db
设置为true(默认情况下为true),因此您可以在调用add_role()
不会保存函数和角色。
尝试:
//globalize $wp_roles
global $wp_roles;
//set use_db to flase
$wp_roles->use_db = false;
//then add your role
$wp_roles->add_role( $role, $display_name, $capabilities );
更新时间:
如果是在测试/开发环境中,那么我看不出有什么坏处,但是如果是在活动环境中,那么可以节省在每次加载时创建该角色所需的时间。
至于最佳实践运行一次,如果在插件中您应该使用register_activation_hook
对于其他任何事情,我都使用一个简单的定制条件函数:
function run_once($key){
$test_case = get_option(\'run_once\');
if (isset($test_case[$key]) && $test_case[$key]){
return false;
}else{
$test_case[$key] = true;
update_option(\'run_once\',$test_case);
return true;
}
}
**usage:**
if (run_once(\'add_user_role\')){
//do you stuff and it will only run once
}