J'ai donc des problèmes avec ça et je ne vois pas pourquoi. J'ai juste besoin d'un rôle personnalisé qui peut accéder au blog à l'arrière.
J'ai ajouté un nouveau type de publication avec un type de capacité blog
et un nouveau rôle d'utilisateur avec toutes les majuscules pour permettre aux utilisateurs ayant un accès administrateur d'ajouter / modifier le type de publication personnalisé. Cela fonctionne pour les administrateurs et ils peuvent accéder au type de publication dans le back-end. Cependant, les utilisateurs de mon rôle personnalisé ne peuvent pas du tout accéder au back-end.
Type d'argument à noter
"capability_type" => 'blog',
"map_meta_cap" => true,
Enregistrer le rôle
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 );
Ajouter des bouchons
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 );
J'ai googlé frénétiquement en essayant de trouver la cause de cela. J'ai essayé avec des majuscules plurielles et non plurielles, j'ai essayé d'ajouter des capacités dans les arguments de type de message. Mais je ne parviens jamais à entrer dans le back-end. Je n'ai pas d'autre code dans le thème qui pourrait expulser les utilisateurs de l'administrateur (j'ai supprimé mon propre code qui les a expulsés pendant le test)
Modifier Ici, vous pouvez voir un vidage des capacités de blog_manager de la base de données, il y a pas mal de tests BS laissés là-dedans, mais cela ne devrait pas les empêcher de se connecter à partir de ce que je sais.
'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,
),
)
la source
Réponses:
Il est difficile de dépanner le code ci-dessus car il ne s'agit que d'une partie du code réel, mais voici le plugin minimum nécessaire pour enregistrer un type de publication personnalisé (appelé Exemple) et un rôle personnalisé (Blog Manager) qui a accès à l'Exemple de type de publication personnalisé .
Cela peut également être utilisé dans le cadre du fichier functions.php d'un thème. Utilisez simplement les crochets d'activation et de désactivation du thème à la place.
la source
Si vous êtes d'accord avec le plugin, vous pouvez utiliser le plugin velow.
https://wordpress.org/plugins/capability-manager-enhanced/
la source