用户19是WP管理员。
$user = new WP_user( 19 );
$user->add_role( \'custom_role\' );
上述代码起作用并添加
custom_role
角色
但是,当我在personal_options_update
和edit_user_profile_update
钩住它不。
我在用户配置文件页面中添加了一个复选框。从上述两个挂钩调用的函数,然后。。。
if( user_can( $user_id, \'administrator\' ) ) {
$user = get_user_by( \'id\', $user_id );
if( ! empty( $_POST[\'my_checkbox\'] ) ) {
update_user_meta( $user_id, \'my_checkbox\', true );
$user->add_cap( \'one_cap\' );
$user->add_cap( \'two_cap\' );
$user->add_role( \'custom_role\' );
}
}
one_cap
和
two_cap
都已为用户正确设置,但没有
custom_role
没有写入调试日志。
这可能是什么原因?
最合适的回答,由SO网友:Nabeel Khan 整理而成
使用profile\\u update挂钩,并在挂钩函数中运行此检查,以确保在更新时也将以前的数据添加到用户概要文件中。
if ( $update ){
do_action(\'profile_update\', $user_id, $old_user_data);
}else{
do_action(\'user_register\', $user_id);
}
return $user_id;
这个答案可以帮助您更好地理解它:
WordPress edit_user_profile_update update secondary role