He configurado un sitio de WordPress para un cliente. El cliente tiene el rol de Editor, sin embargo, instalé el complemento Miembros y le di al cliente la capacidad de agregar nuevos usuarios al administrador de WP. Esto está funcionando bien.
La pregunta que tengo es que me gustaría que el cliente tenga la capacidad de crear un nuevo usuario como con las funciones de colaborador, suscriptor, editor y autor, pero NO como administrador. Los nuevos usuarios que crea el cliente no deben tener el rol de administrador. ¿Es posible ocultar esta opción de alguna manera?
Gracias vayu
Respuestas:
En realidad es bastante fácil. Debe filtrar
map_meta_caps
y evitar que los editores creen / editen administradores, y elimine la función de administrador de la matriz de 'funciones editables'. Esta clase, como complemento o en el archivo functions.php de su tema lo haría:EDITAR
Ok, eché un vistazo a por qué dejaba pasar la eliminación de usuarios. Parece que delete_user se maneja de manera ligeramente diferente de edit_user; He modificado el método map_meta_cap para evitar esto. He probado en 3.0.3 y esto evitará que nadie, excepto los administradores, elimine, edite o cree un administrador.
EDITAR 2
Actualicé el código para reflejar la respuesta de @ bugnumber9 a continuación. ¡Por favor, dale una respuesta a esa respuesta!
fuente
A pesar de tener ~ 7 años, este hilo se puede buscar en Google fácilmente y aún así proporciona una solución de trabajo. Me refiero al código proporcionado por @John P Bloch.
Dicho esto, en PHP 7 produce un error no crítico (PHP obsoleto) de la siguiente manera:
Para solucionar esto, simplemente reemplace esta pieza:
con este:
Esto arreglará el problema.
fuente
Estaba buscando una solución en la que el Editor pudiera editar solo menús Y crear / editar usuarios sin necesidad de un complemento. Así que terminé haciéndolo para aquellos que están interesados.
fuente
La solución @John P Blochs todavía funciona bien, pero pensé que también agregaría mi pequeño filtro para 'map_meta_cap'. Solo un poco más corto y limpio, al menos para mis ojos;)
fuente