Benutzerdefinierte Rollenzugriff auf benutzerdefinierten Beitragstyp im Back-End zulassen

Ich habe einige Probleme damit und ich kann nicht sehen warum. Ich brauche nur eine benutzerdefinierte Rolle, die auf das Blog im Backend zugreifen kann.

Ich habe einen neuen Beitragstyp mit einem blog vom Fähigkeitstyp und eine neue Benutzerrolle mit allen Oberbegriffen hinzugefügt, die Benutzern mit Administratorzugriff erlauben, den benutzerdefinierten Beitragstyp hinzuzufügen / zu bearbeiten. Dies funktioniert für Administratoren und sie können auf den Post-Typ im Backend zugreifen. Benutzer meiner benutzerdefinierten Rolle können jedoch überhaupt nicht ins Backend gelangen.

Postargumente der Anmerkung

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

Kappen 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 hastig versucht, die Ursache dafür zu finden. Ich habe versucht mit Plural, nicht Plural Caps, versucht, functionen in den Post-Typ Args hinzuzufügen. Aber ich komme nie ins Backend. Ich habe keinen anderen Code in dem Theme, der Benutzer aus dem Admin rausschmeißen könnte (Ich habe meinen eigenen Code entfernt, der sie beim Testen ausstieß)

Edit Hier sehen Sie einen Dump der blog_manager-Fähigkeiten aus der database, es gibt ein gutes Stück BS, das noch da ist, bu / t, das sollte sie nicht davon abhalten, sich von dem einzuloggen, was ich weiß.

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

Solutions Collecting From Web of "Benutzerdefinierte Rollenzugriff auf benutzerdefinierten Beitragstyp im Back-End zulassen"

Wenn Sie mit Plugin in Ordnung sind, können Sie velow plugin verwenden.

https://wordpress.org/plugins/capability-manager-enhanced/

Es ist schwierig, den obigen Code zu behandeln, da er nur ein Teil des eigentlichen Codes ist. Hier ist jedoch das Mindest-Plug-in für die Registrierung eines benutzerdefinierten Posttyps (Beispiel) und einer benutzerdefinierten Rolle (Blog-Manager) mit Zugriff auf den benutzerdefinierten Post-Typ .

Dies kann auch als Teil der functions.php-Datei eines Themes verwendet werden. Verwenden Sie stattdessen die Haken zum Aktivieren und Deaktivieren des Themas.

 < ?php /** * Plugin Name: WPSE 186337 * Description: Debug WordPress StackExchange question 186337 * Plugin URI: https://wordpress.stackexchange.com/questions/186337/ * Author: Nathan Johnson * Licence: GPL2+ * Licence URI: https://www.gnu.org/licenses/gpl-2.0.en.html */ //* Don't access this file directly defined( 'ABSPATH' ) or die(); //* Add action to init to register custom post type add_action( 'init', 'se186337_init' ); //* Register activation hook to add Blog Manager role register_activation_hook( __FILE__ , 'se186337_activation' ); //* Register deactivation hook to remove Blog Manager role register_deactivation_hook( __FILE__ , 'se186337_deactivation' ); function se186337_activation() { $caps = [ //* Meta capabilities 'read' => true, 'edit_blog' => true, 'read_blog' => true, 'delete_blog' => true, //* Primitive capabilities used outside of map_meta_cap() 'edit_blogs' => true, 'edit_others_blogs' => true, 'publish_blogs' => true, 'read_private_blogs' => true, //* Primitive capabilities used within of map_meta_cap() 'delete_blogs' => true, 'delete_private_blogs' => true, 'delete_published_blogs' => true, 'delete_others_blogs' => true, 'edit_private_blogs' => true, 'edit_published_blogs' => true, ]; add_role( 'blog_manager', 'Blog Manager', $caps ); } function se186337_deactivation() { remove_role( 'blog_manager' ); } function se186337_init() { $labels = [ 'name' => __( 'Examples' ), 'singular_name' => __( 'Example' ), ]; $args = [ 'labels' => $labels, 'public' => true, 'has_archive' => true, 'capability_type' => 'blog', 'map_meta_cap' => true, ]; register_post_type( 'examples', $args ); }