Restrinja el tipo de publicación personalizada únicamente a la función de administrador del sitio

13

¿Cómo puedo eliminar este tipo de publicación personalizada para que no se muestre en el panel para usuarios que no son administradores?

/* Add Websites Custom Post Type */
add_action( 'init', 'create_website_type' );
function create_website_type() {

    register_post_type( 'website',
        array(
            'labels' => array(
                'name' => __( 'Websites' ),
                'singular_name' => __( 'Website' ),
                'add_new' => __( 'Add New Website' ),
                'add_new_item' => __( 'Add New Website' ),
                'edit' => __( 'Edit Website' ),             
                'edit_item' => __( 'Edit Website' ),                
                'new_item' => __( 'Add New Website' ),              
                'view' => __( 'View Website' ),         
                'view_item' => __( 'View Website' ),                    
                'search_items' => __( 'Search Websites' ),  
                'not_found' => __( 'No Websites Found' ),
                'not_found_in_trash' => __( 'No Websites found in Trash' ),                                         
            ),
            'description' => __('Websites to be shown in Resources section.'),
            'public' => true,
            'show_ui' => true,
            'publicly_queryable' => true,
            'exclude_from_search' => false,
            'menu_position' => 20,
            'supports' => array('title', 'editor'),
            'can_export' => true        
        )
    ); 
    remove_post_type_support('website','editor'); 
}
    
pregunta urok93 12.06.2012 - 13:00

1 respuesta

10

register_post_type() acepta un parámetro capabilities en sus argumentos. Vea get_post_type_capabilities() para valores posibles. De los comentarios:

  

De forma predeterminada, se aceptan siete claves como parte de la matriz de capacidades:

     
  • edit_post , read_post y delete_post son capacidades meta, que son entonces   en general asignados a las capacidades primitivas correspondientes en función de la   contexto, que sería la publicación editada / leída / eliminada y el usuario o   papel que se está comprobando. Por lo tanto estas capacidades generalmente no serían concedidas   directamente a los usuarios o roles.

  •   
  • edit_posts : controla si se pueden editar los objetos de este tipo de publicación.

  •   
  • edit_others_posts : controla si se pueden editar los objetos de este tipo que son propiedad de otros usuarios. Si el tipo de publicación no admite un autor, esto se comportará como edit_posts .
  •   
  • publish_posts : controla los objetos de publicación de este tipo de publicación.
  •   
  • read_private_posts : controla si se pueden leer los objetos privados.
  •   

Estas cuatro capacidades primitivas se verifican en el núcleo en varias   ubicaciones También hay otras siete capacidades primitivas que son   no referenciado directamente en el núcleo, excepto en map_meta_cap() , que toma   Las tres capacidades meta antes mencionadas y las traduce a   Una o más capacidades primitivas que luego deben compararse   El usuario o rol, dependiendo del contexto.

     
  • read : controla si se pueden leer los objetos de este tipo de publicación.
  •   
  • delete_posts : controla si se pueden eliminar los objetos de este tipo de publicación.
  •   
  • delete_private_posts : controla si se pueden eliminar objetos privados.
  •   
  • delete_published_posts : controla si los objetos publicados se pueden eliminar.
  •   
  • delete_others_posts : controla si se pueden eliminar los objetos que pertenecen a otros usuarios. Si el tipo de publicación no admite un autor, esto se comportará como delete_posts .
  •   
  • edit_private_posts : controla si se pueden editar objetos privados.
  •   
  • edit_published_posts : controla si los objetos publicados pueden editarse.
  •   

Estas capacidades adicionales solo se usan en map_meta_cap() . Así,   solo se asignan de forma predeterminada si el tipo de publicación se registra con   el argumento 'map_meta_cap' establecido en true (el valor predeterminado es false ).

En tus argumentos de registro agrega:

'capabilities' => array(
    'edit_post'          => 'update_core',
    'read_post'          => 'update_core',
    'delete_post'        => 'update_core',
    'edit_posts'         => 'update_core',
    'edit_others_posts'  => 'update_core',
    'delete_posts'       => 'update_core',
    'publish_posts'      => 'update_core',
    'read_private_posts' => 'update_core'
),
    
respondido por el fuxia 12.06.2012 - 13:28

Lea otras preguntas en las etiquetas