Permitir que los usuarios editen solo su página y la de nadie más
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?

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' );

El plugin Role Scoper puede habilitar esto.

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)
