Hola Nigel, tengo un membership Site que cuando un usuario hace la acción de rellenar un formulario se le cambia el rol, encontrado este código y me funciona.
/** canvi de rol omplir formulari */
add_action('cred_save_data', 'cred_update_user_role_action',10,2);
function cred_update_user_role_action($post_id, $form_data) {
if ($form_data['id'] == 3050) {
// get the author ID and corresponding WP_User from the post ID
$p = get_post( $post_id );
$author_id = $p->post_author;
$u = new WP_User( $author_id );
// modify the user role to match the selected option
$u->remove_role( 'subscriber' ); /// adjust role name here if needed
$u->add_role( 'docent' );
}
}
La cuestión es que en el momento que el usuario rellena el formulario ID 3050 tiene un rol de subscriptor y pasa a tener un rol de "Docent", Por ahora todo perfecto la cuestión es que necesito cambiar del Rol "docent a "intructor-Doncent" y si realizo el cambio en la función entonces no me lo hace correcto y incluso me deja el usuario sin ningún rol. Los dos Rol son creados del mismo lugar en Acceso control de Toolset.
También he detectado que en el apartado de cada usuario me aparece una nueva sección que se dice: "Competencias adicionales" adjunto imagen.
No se si en el apartado de crear nuevos Roles he de cambiar alguna especificaciones.
Saludos.
Rafa Corts
¿Quieres decir que has cambiado plan y en lugar de cambiar el rol del usuario desde suscritor a docent quieres cambiar a instructor-docent en este mismo paso?
¿Ó que quieres cambiar desde el rol suscritor al rol docent y luego al rol instructor-docent en otro paso?
No sé por que aparecen todas las entradas en la lista de capacitats, puede ser unos "restos" en el base de datos, me habra falta acceso para echar un vistazo.
Voy a marcar la repuesta siguiente como privada para las credenciales de este sitio.
Perdona Nigel el codigo que tengo en la pagina fnctions.php es:
add_action('cred_save_data', 'canvi_de_rol',10,2);
function canvi_de_rol($post_id, $form_data) {
if ($form_data['id'] == 3556) {
// get the author ID and corresponding WP_User from the post ID
$p = get_post( $post_id );
$author_id = $p->post_author;
$u = new WP_User( $author_id );
// modify the user role to match the selected option
$u->remove_role( 'subscriber' ); /// adjust role name here if needed
$u->add_role( 'instructor-docent' );
}
}
Los roles se deben poner en minusculas?
Saludos
Rafa Corts
Nota que su nombre es "Instructor-Docent" y el slug es "instructor_docent" (no "intructor-docent").
Entonces debes cambiar la linea
$u->add_role( 'instructor_docent' );
No puedes asignar un rol no existente así (pero resulta que WordPress se añada como "capability") y es por eso que aparecen tales "Competències Addicionals" en el perfíl, se parece que son restos de intentos de asignar roles no existentes.
Puedes desactivar mostrar este sección con el siguiente: