¿Es posible ocultar la IU / Menú de tipo de publicación personalizada de roles de usuario específicos?

16

Lo que busco hacer es ocultar completamente la IU para un tipo de publicación personalizada de roles de usuario específicos ... anteriormente he encontrado muchos recursos sobre cómo deshabilitar el acceso al uso de esos CPT, pero nada que realmente te permita ocultarte por completo. La interfaz de usuario de CPT se basa en qué usuario ha iniciado sesión en el panel de control.

Esto es importante ya que necesito que los clientes se mantengan completamente alejados de los tipos de publicaciones personalizadas para la tienda, y si pueden ver la interfaz de usuario de CPT de la tienda en el tablero de mandos, no hay una diferencia si sus capacidades están restringidas desde que se mantienen. voy a preguntar cómo pueden ir para agregar productos por su cuenta como resultado.

Realmente preferiría no lograr esto con un complemento, sin embargo, si hay algo que puede hacer el truco de una manera no hinchada que sería genial, supongo.

Gracias por tu ayuda, SB

    
pregunta Mr.Brown 17.09.2011 - 20:51

3 respuestas

32

Para ocultar un elemento de menú de tipo de publicación de usuarios no administradores:

function wpse28782_remove_menu_items() {
    if( !current_user_can( 'administrator' ) ):
        remove_menu_page( 'edit.php?post_type=your_post_type' );
    endif;
}
add_action( 'admin_menu', 'wpse28782_remove_menu_items' );

your_post_type debe ser el nombre de tu tipo de publicación real.

EDIT-

otras páginas de menú que puedes eliminar:

remove_menu_page('edit.php'); // Posts
remove_menu_page('upload.php'); // Media
remove_menu_page('link-manager.php'); // Links
remove_menu_page('edit-comments.php'); // Comments
remove_menu_page('edit.php?post_type=page'); // Pages
remove_menu_page('plugins.php'); // Plugins
remove_menu_page('themes.php'); // Appearance
remove_menu_page('users.php'); // Users
remove_menu_page('tools.php'); // Tools
remove_menu_page('options-general.php'); // Settings

EDIT 2 -

Eliminando elementos del menú del complemento.

Para los complementos, parece que solo necesita el page= query var. La otra cosa a tener en cuenta es la prioridad, que es el tercer argumento para el admin_menu add_action . Debe establecerse lo suficientemente bajo (cuanto mayor sea el número, menor será la prioridad) para que los complementos ya se hayan agregado al menú.

function wpse28782_remove_plugin_admin_menu() {
    if( !current_user_can( 'administrator' ) ):
        remove_menu_page('cart66_admin');
    endif;
}
add_action( 'admin_menu', 'wpse28782_remove_plugin_admin_menu', 9999 );
    
respondido por el Milo 17.09.2011 - 21:14
1

La respuesta aceptada se puede usar para ocultar tipos de publicaciones personalizadas (y otros elementos variados) como se describe. Pero si desea ocultar el propio menú del plugin CPT Ustrong , también puede eliminar la acción que lo agrega al menú en primer lugar.

if( !current_user_can( 'administrator' ) ) {
    remove_action( 'admin_menu', 'cptui_plugin_menu' );
}
    
respondido por el Grant 15.10.2018 - 15:21
0

También puede usar el complemento Adminimize . Este complemento tiene opciones para todos los tipos de publicación, meta box y muchos más para ocultar en diferentes roles. No hay codificación.

    
respondido por el bueltge 11.01.2013 - 20:29

Lea otras preguntas en las etiquetas