Permitir que los usuarios editen solo su página y la de nadie más

26 mar 2012, 19:16:37
Vistas: 16.7K
Votos: 7

Actualmente tenemos alrededor de 50 páginas, y quiero que cada usuario (por ejemplo, bob, rob, smith) solo pueda editar 1 página. Por ejemplo, bob y smith tienen cada uno su propia página. No quiero que bob pueda editar la página de smith. Quiero que bob SOLO pueda editar la página de bob. No me importa si puede ver otras páginas.

Revisando los roles de usuario, no encuentro una forma de hacer esto actualmente; solo veo cómo restringir el acceso a escala global.

¿Existen plugins que ayuden a restringir el acceso de edición por usuario, o roles limitados a editar páginas específicas para poder agregar 1 usuario por rol? ¿O hay alguna forma de hacer esto con configuraciones predeterminadas que haya pasado por alto?

1
Comentarios

El rol de colaborador solo permite editar las publicaciones propias. O podrías crear un rol personalizado.

Brad Dalton Brad Dalton
23 oct 2014 16:20:45
Todas las respuestas a la pregunta 4
0

Puedes agregar esto a tu archivo functions.php en tu plantilla para permitir que el usuario edite las páginas que ha creado y gestione medios. Solo especifica su $user_id (por ejemplo, 27):

function add_theme_caps() {
    // para agregar capacidades a $user_id
    $user = new WP_User( $user_id );
    $user->add_cap( 'edit_pages' );
    $user->add_cap( 'edit_published_pages' );
    $user->add_cap( 'upload_files' );
}
add_action( 'admin_init', 'add_theme_caps' );

Puedes encontrar el $user_id de un usuario específico desde la URL cuando editas a un usuario en particular desde la página de administración de WordPress.

Consulta la lista completa de capacidades de WordPress.

Si prefieres modificar el rol incorporado contributor para permitir que todos los usuarios con el rol contributor modifiquen las páginas que han creado:

function add_theme_caps() {
    // para agregar capacidades al rol `contributor`
    $role = get_role( 'contributor' );
    $role->add_cap( 'edit_pages' );
    $role->add_cap( 'edit_published_pages' );
    $role->add_cap( 'upload_files' );
}
add_action( 'admin_init', 'add_theme_caps' );
15 dic 2014 00:48:40
0

El Role Scope es muy potente, pero creo que es excesivo para esto. Si configuras a Bob y Smith con el rol de Autor (uno de los roles predeterminados), solo podrán editar sus propias publicaciones.

26 mar 2012 22:31:04
0

El plugin Role Scoper puede habilitar esto.

26 mar 2012 19:27:17
0

También puedes editar directamente la tabla de WordPress. Parecía que phpAdmin sería una forma más rápida de hacerlo.

La tabla es:

wp_usermeta

Busca el user_id, cambia el valor para:

wp_capabilities

y establécelo como algo similar a:

a:4:{s:11:"contributor";b:1;b:1;s:10:"edit_pages";b:1;s:20:"edit_published_pages";b:1;s:12:"upload_files";b:1;}

Encontré que http://www.unserialize.me/ es útil para asegurarme de que la serialización sea correcta (y supongo que también hay otros sitios similares)

23 dic 2016 02:31:40