Tengo un tipo de publicación personalizado al que me gustaría restringir el acceso a ciertos roles, sin embargo, ya he agregado contenido usando el tipo de publicación personalizada y ahora tengo que restringirlos. El tipo_capacidad era 'post'
'capability_type' => 'post'
Sin embargo, ¿qué está bien cuando el contenido se muestra en el backend? Ahora, tan pronto como agrego alguna capacidad, el contenido desaparece del backend.
¡Intenté personalizar el tipo de capacidad para incluir definiciones en plural para construir la mía propia, pero tan pronto como elimino o cambio los tipos de capacidad, desapareció!
código completo:
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 );
}
También probé esto con un tipo de publicación personalizado completamente nuevo y, independientemente del tipo de capacidad, obtengo el mismo problema, por ejemplo, incluso si lo elimino y agrego mi personalizado:
'capability_type' => array('movie','movies');
fuente
add_theme_caps()
debe llamarse solo una vez, no cada vez que se carga una página de administrador. Sería mejor usarloswitch_theme
como gancho para la activación del tema oregister_activation_hook
en la activación del complemento.Añadir:
a su matriz $ args. Mira aquí , para más. ¡Espero eso ayude!
fuente
En mi humilde opinión, nunca mapeas tus propias capacidades. Asegúrate de usar el complemento meta cap del mapa para hacerlo. http://codex.wordpress.org/Function_Reference/map_meta_cap
Pasé días tratando de asignar mis mayúsculas personalizadas manualmente con código. Simplemente instale ese complemento, asigne sus mayúsculas y desactívelo una vez que esté trabajando. Si crea roles personalizados, necesitará el complemento Miembros .
La forma en que pruebo para ASEGURARME de que mi rol tiene esas capacidades (a veces juras que lo haces pero en realidad no lo haces) hace una página de depuración con:
Esto le mostrará qué capacidades tiene de hecho.
fuente
Para los tipos de publicaciones personalizadas, NO sugiero usar hook:
en cambio sugiero usar:
fuente