custom-post-types – ¿Por qué mi rol de WP personalizado necesita edit_posts para editar imágenes?

Pregunta:

Esto puede resultar obvio para alguien que no sea yo. Creo recordar haber leído en alguna parte que una "imagen" es de hecho una forma de "publicación".

  • Tengo un tipo de publicación personalizada llamada "listado"
  • Tengo un rol de WP personalizado de "cliente"

Cuando estoy conectado como el "cliente", y abro la ventana emergente de medios, busco una imagen, hago clic en "mostrar" para abrirla, y luego hago clic en "editar imagen", obtengo un -1. Es decir. no se muestra nada más que "-1".

Puedo solucionar este problema asignando a mi rol personalizado la capacidad de "edit_posts". ¿Por qué es esto? Tan pronto como hago esto, tengo otro problema, el rol de usuario "cliente" ahora tiene acceso a publicaciones, comentarios y herramientas, que no quiero.

¿Quizás no he configurado correctamente mi tipo de publicación personalizada con las capacidades? ¿Cómo puedo permitir que el "cliente" edite las imágenes pero no tenga acceso a las publicaciones?

      $args = array(
    'label' => 'Listing',
    'description' => '',
    'public' => true,
    'show_ui' => true,
    'show_in_menu' => true,
    'show_in_nav_menus' => true,
    'map_meta_cap' => true,
    'capability_type' => 'listing',
    'capabilities' => array(
                    'edit_post' => 'edit_listing',
                    'read_post' => 'read_listing',
                    'delete_post' => 'delete_listing',
                    'edit_posts' => 'edit_listings',
                    'edit_others_posts' => 'edit_others_listings',
                    'publish_posts' => 'publish_listings',
                    'read_private_posts' => 'read_private_listings',
                    'delete_posts' => 'delete_listings',
                    'delete_private_posts' => 'delete_private_listings',
                    'delete_published_posts' => 'delete_published_listings',
                    'delete_others_posts' => 'delete_others_listings',
                    'edit_private_posts' => 'edit_private_listings',
                    'edit_published_posts' => 'edit_published_listings',
                ),
    'menu_position' => 5, 
    'hierarchical' => false,
    'has_archive' => false, 
    'rewrite' => array('slug' => 'listing'), 
    'query_var' => true,
    'supports' => array('title'),
    'labels' => $labels
  ); 

Respuesta:

Si tuviera que adivinar: porque las imágenes son archivos adjuntos y los archivos adjuntos son un tipo de publicación . Por lo tanto, para editar una imagen, que es un archivo adjunto, que es una publicación, se requiere la capacidad edit_post .

EDITAR

¿No tiene sus claves / valores de matriz de mapeo de capability invertidos?

por ejemplo, tiene 'edit_posts' => 'edit_listings' . ¿No debería ser en su lugar 'edit_listings' => 'edit_posts' ?

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım