Así que tengo algunos problemas con esto y no puedo ver por qué. Solo necesito un rol personalizado que pueda acceder al blog en el back-end.
Agregué un nuevo tipo de publicación con un tipo de capacidad blog
y un nuevo rol de usuario con todos los límites para permitir a los usuarios con acceso de administrador agregar / editar el tipo de publicación personalizada. Esto funciona para los administradores y pueden acceder al tipo de publicación en el back-end. Sin embargo, los usuarios de mi rol personalizado no pueden acceder al back-end.
Publicar args de nota
"capability_type" => 'blog',
"map_meta_cap" => true,
Registrar rol
function add_blog_manager_role(){
add_role(
'blog_manager',
'Blog Manager',
array(
'read' => true,
'edit_posts' => false,
'delete_posts' => false,
'publish_posts' => false,
'upload_files' => true
)
);
}
add_action( 'admin_init', 'add_blog_manager_role', 4 );
Agregar tapas
function add_blog_role_caps() {
$roles = array('blog_manager', 'editor','administrator');
foreach($roles as $the_role) {
$role = get_role($the_role);
$role->add_cap( 'read' );
$role->add_cap( 'read_blog');
$role->add_cap( 'read_private_blog' );
$role->add_cap( 'edit_blog' );
$role->add_cap( 'edit_others_blog' );
$role->add_cap( 'edit_published_blog' );
$role->add_cap( 'publish_blog' );
$role->add_cap( 'delete_others_blog' );
$role->add_cap( 'delete_private_blog' );
$role->add_cap( 'delete_published_blog' );
}
}
add_action('admin_init', 'add_blog_role_caps', 5 );
He estado buscando en Google frenéticamente tratando de encontrar la causa de esto. He intentado con mayúsculas en plural, no plural, he intentado agregar capacidades en los argumentos de tipo post. Sin embargo, nunca puedo entrar en el back-end. No tengo ningún otro código en el tema que pueda expulsar a los usuarios del administrador (eliminé mi propio código que los expulsó al probar esto)
Editar Aquí puede ver un volcado de las capacidades blog_manager de la base de datos, hay un poco de pruebas de BS que quedan allí, pero eso no debería impedir que puedan iniciar sesión de lo que sé.
'blog_manager' => array (
'name' => 'Blog Manager',
'capabilities' => array (
'read' => true,
'edit_posts' => false,
'delete_posts' => false,
'publish_posts' => false,
'upload_files' => true,
'read_blog' => true,
'read_private_blog' => true,
'edit_blog' => true,
'edit_others_blog' => true,
'edit_published_blog' => true,
'publish_blog' => true,
'delete_others_blog' => true,
'delete_private_blog' => true,
'delete_published_blog' => true,
'blog' => true,
'read_private_blogs' => true,
'edit_blogs' => true,
'edit_others_blogs' => true,
'edit_published_blogs' => true,
'publish_blogs' => true,
'delete_others_blogs' => true,
'delete_private_blogs' => true,
'delete_published_blogs' => true,
'delete_blogs' => true,
'delete_blog' => true,
),
)
fuente
Respuestas:
Es difícil solucionar el código anterior porque es solo una parte del código real, pero aquí está el complemento mínimo necesario para registrar un tipo de publicación personalizado (llamado Ejemplo) y un rol personalizado (Blog Manager) que tiene acceso al tipo de publicación personalizada de Ejemplo .
Esto también se puede usar como parte del archivo functions.php de un tema. Simplemente use los ganchos de activación y desactivación del tema en su lugar.
fuente
Si está de acuerdo con el complemento, puede usar el complemento velow.
https://wordpress.org/plugins/capability-manager-enhanced/
fuente