J'ai un type de publication personnalisé que j'aimerais restreindre l'accès à certains rôles, cependant, j'ai déjà ajouté du contenu en utilisant le type de publication personnalisé et maintenant je dois les restreindre. Le type de capacité était «post»
'capability_type' => 'post'
Ce qui est bien car le contenu apparaît dans le backend cependant, dès que j'ajoute des fonctionnalités, le contenu disparaît du backend?
J'ai essayé de personnaliser le type de capacité pour inclure plusieurs définitions afin de construire la mienne, mais dès que je supprime ou modifie les types de capacité, c'est parti!
code complet:
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 );
}
J'ai également testé cela avec un tout nouveau type de message personnalisé et quel que soit le type de capacité, j'obtiens le même problème, par exemple, même si je le supprime et que j'en ajoute un personnalisé:
'capability_type' => array('movie','movies');
la source
add_theme_caps()
ne doit être appelé qu'une seule fois, pas à chaque fois qu'une page d'administration est chargée. Il serait préférable de l'utiliserswitch_theme
comme hook pour l'activation du thème ou pour l'activationregister_activation_hook
du plugin.Ajouter:
à votre tableau $ args. Regardez ici , pour en savoir plus. J'espère que ça aide!
la source
À mon humble avis, vous ne cartographiez jamais vos propres capacités. Assurez-vous d'utiliser le plugin map meta cap pour le faire. http://codex.wordpress.org/Function_Reference/map_meta_cap
J'ai passé des jours à essayer de mapper mes casquettes personnalisées manuellement avec du code. Installez simplement ce plugin, mappez vos bouchons et désactivez une fois que vous travaillez. Si vous créez des rôles personnalisés, vous aurez besoin du plugin Members .
La façon dont je teste pour ASSURER que mon rôle a ces capacités (parfois vous jurez que vous le faites mais ne le faites pas réellement) crée une page de débogage avec:
Cela vous montrera quelles capacités vous avez en fait.
la source
Pour les types de publication personnalisés, je ne suggère PAS d' utiliser le crochet:
je suggère plutôt d'utiliser:
la source