Ich habe einen benutzerdefinierten Beitragstyp, der den Zugriff auf bestimmte Rollen einschränken soll. Ich habe jedoch bereits Inhalte mit dem benutzerdefinierten Beitragstyp hinzugefügt und muss sie nun einschränken. Der Capability_Typ war "Post".
'capability_type' => 'post'
Was ist in Ordnung, wenn der Inhalt im Backend angezeigt wird? Sobald ich Funktionen hinzufüge, verschwindet der Inhalt aus dem Backend.
Ich habe versucht, den Fähigkeitstyp so anzupassen, dass er mehrere Definitionen enthält, um meine eigenen zu erstellen. Sobald ich jedoch die Fähigkeitstypen entferne oder ändere, ist sie verschwunden!
vollständiger Code:
add_action( 'init', 'register_cpt_gallery' );
function register_cpt_gallery() {
$labels = array(
'name' => _x( 'Galleries', 'gallery' ),
'singular_name' => _x( 'Gallery', 'gallery' ),
'add_new' => _x( 'Add New', 'gallery' ),
'add_new_item' => _x( 'Add New Gallery', 'gallery' ),
'edit_item' => _x( 'Edit Gallery', 'gallery' ),
'new_item' => _x( 'New Gallery', 'gallery' ),
'view_item' => _x( 'View Gallery', 'gallery' ),
'search_items' => _x( 'Search Galleries', 'gallery' ),
'not_found' => _x( 'No galleries found', 'gallery' ),
'not_found_in_trash' => _x( 'No galleries found in Trash', 'gallery' ),
'parent_item_colon' => _x( 'Parent Gallery:', 'gallery' ),
'menu_name' => _x( 'Galleries', 'gallery' ),
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'description' => 'Image galleries for teachers classes',
'supports' => array( 'title', 'editor', 'author'),
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'menu_icon' => get_bloginfo('template_url') . '/images/imagegallery.png',
'show_in_nav_menus' => true,
'publicly_queryable' => true,
'exclude_from_search' => false,
'has_archive' => true,
'query_var' => true,
'can_export' => true,
'rewrite' => true,
'capability_type' => 'post',
'capabilities' => array(
'edit_post' => 'edit_gallery',
'edit_posts' => 'edit_galleries',
'edit_others_posts' => 'edit_other_galleries',
'publish_posts' => 'publish_galleries',
'read_post' => 'read_gallery',
'read_private_posts' => 'read_private_galleries',
'delete_post' => 'delete_gallery'
)
);
register_post_type( 'gallery', $args );
}
Ich habe dies auch mit einem völlig neuen benutzerdefinierten Beitragstyp getestet und unabhängig vom Funktionstyp erhalte ich das gleiche Problem, z. B. auch wenn ich ihn entferne und meinen benutzerdefinierten hinzufüge:
'capability_type' => array('movie','movies');
quelle
add_theme_caps()
sollte nur einmal aufgerufen werden, nicht jedes Mal, wenn eine Admin-Seite geladen wird. Es wäre besser,switch_theme
als Hook für die Theme-Aktivierung oderregister_activation_hook
für die Plugin-Aktivierung zu verwenden.Hinzufügen:
zu Ihrem $ args-Array. Schauen Sie hier für mehr. Ich hoffe es hilft!
quelle
IMHO bilden Sie nie Ihre eigenen Fähigkeiten ab. Stellen Sie sicher, dass Sie das Map Meta Cap Plugin verwenden. http://codex.wordpress.org/Function_Reference/map_meta_cap
Ich habe tagelang versucht, meine benutzerdefinierten Kappen manuell mit Code zuzuordnen. Installieren Sie einfach dieses Plugin, ordnen Sie Ihre Caps zu und deaktivieren Sie es, sobald es funktioniert. Wenn Sie benutzerdefinierte Rollen erstellen, benötigen Sie das Mitglieder- Plugin.
Die Art und Weise, wie ich teste, um sicherzustellen, dass meine Rolle diese Fähigkeiten aufweist (manchmal schwören Sie, dass Sie dies tun, aber nicht wirklich tun), erstellt eine Debugging-Seite mit:
Dies zeigt Ihnen, über welche Funktionen Sie tatsächlich verfügen.
quelle
Für benutzerdefinierte Beitragstypen empfehle ich NICHT die Verwendung von Hooks:
stattdessen schlage ich vor:
quelle