Ich habe also einige Probleme damit und kann nicht verstehen warum. Ich brauche nur eine benutzerdefinierte Rolle, die auf das Blog im Backend zugreifen kann.
Ich habe einen neuen Beitragstyp mit dem Funktionstyp blog
und einer neuen Benutzerrolle mit allen Obergrenzen hinzugefügt , die es Benutzern mit Administratorzugriff ermöglichen, den benutzerdefinierten Beitragstyp hinzuzufügen / zu bearbeiten. Dies funktioniert für Administratoren und sie können auf den Beitragstyp im Backend zugreifen. Benutzer meiner benutzerdefinierten Rolle können jedoch überhaupt nicht in das Back-End gelangen.
Post-Typ-Argumente
"capability_type" => 'blog',
"map_meta_cap" => true,
Rolle registrieren
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 );
Caps hinzufügen
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 );
Ich habe verzweifelt gegoogelt und versucht, die Ursache dafür zu finden. Ich habe versucht, mit Plural, nicht Plural Caps, Funktionen in die Post-Typ-Argumente hinzuzufügen. Ich komme jedoch nie ins Backend. Ich habe keinen anderen Code im Thema, der Benutzer aus dem Administrator werfen könnte (ich habe meinen eigenen Code entfernt, der sie beim Testen rausgeschmissen hat).
Bearbeiten Hier sehen Sie einen Speicherauszug der blog_manager-Funktionen aus der Datenbank. Dort ist noch einiges an Test-BS übrig, aber das sollte nicht verhindern, dass sie sich von dem, was ich weiß, anmelden können.
'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,
),
)
quelle
Antworten:
Es ist schwierig, den obigen Code zu beheben, da er nur ein Teil des tatsächlichen Codes ist. Hier ist jedoch das Mindest-Plugin, das zum Registrieren eines benutzerdefinierten Beitragstyps (als Beispiel bezeichnet) und einer benutzerdefinierten Rolle (Blog Manager) erforderlich ist, die Zugriff auf den benutzerdefinierten Beitragstyp "Beispiel" hat .
Dies kann auch als Teil der Datei functions.php eines Themas verwendet werden. Verwenden Sie stattdessen einfach die Hooks zur Aktivierung und Deaktivierung des Themas.
quelle
Wenn Sie mit dem Plugin einverstanden sind, können Sie das Velow-Plugin verwenden.
https://wordpress.org/plugins/capability-manager-enhanced/
quelle