2011-06-13 10 views
5


He añadido un usuario medida Tipo en Wordpress, la personalizada del tipo convencional apoya Autores (ver más abajo). El tipo de usuario personalizado tiene todos los privilegios de un autor a excepción de 'publicar publicaciones', pero es no en la lista de posibles autores para asignar a la publicación.WordPress: Custom Los usuarios no aparece en la casilla Autor

¿Qué estoy haciendo mal?

Código:

if (!get_role('member')) { 
     add_role('member', 'SFUK Member', array(
      'delete_posts' => true, 
      'edit_posts' => true, 
      'read' => true, 
      'upload_files' => true, 
      'edit_published_posts' => true, 
      'delete_published_posts' => true 
     )); 
} 

y aquí es el tipo de mensaje personalizado:

$args = array(
    'labels' => $labels, 
    'public' => true, 
    'publicly_queryable' => true, 
    'show_ui' => true, 
    'query_var' => true, 
    'rewrite' => true, 
    'capability_type' => 'post', 
    'hierarchical' => true, 
    'menu_position' => 0, 
    'supports' => array('title', 'editor', 'thumbnail', 'page-attributes', 'author') 
); 

if (!post_type_exists('ent')) { 
    register_post_type('ent', $args); 
    remove_post_type_support('ent', 'editor'); 

} 

Avisadme si se necesita más información.

+0

¿Los privilegios de usuario funcionan en wp-admin? de la manera que esperas? ... ¿También estás usando un tema/widget personalizado para mostrar el nombre del autor cuando se publica ?, ¿muestra un valor incorrecto ?, o simplemente en blanco. Hay muchas maneras en que esto podría haberse hecho mal sadly = [ – PicoCreator

+0

También de qué archivos provienen sus fragmentos de código = P – PicoCreator

Respuesta

6

El menú desplegable autores se crea la siguiente llamada:

wp_dropdown_users(array(
    'who' => 'authors', 
    'name' => 'post_author_override', 
    'selected' => empty($post->ID) ? $user_ID : $post->post_author, 
    'include_selected' => true 
)); 

El argumento who significa que sólo los usuarios con al menos 'autor' papel serán listados y the Codex page dice que en la actualidad es ya sea 'autores' o vacíos (es decir, todos los usuarios). Hay un filtro para esta función pero toma el HTML como entrada. Puede crear una nueva consulta para los usuarios y luego generar un nuevo menú desplegable HTML. Esta es la primera forma de resolver su problema.

Sin embargo, esta función con 'quién' configurada como 'autores' busca usuarios cuyo nivel no es 0, lo cual es bastante extraño ya que los niveles de usuario han quedado obsoletos hace mucho tiempo. He encontrado a related bug report en Trac recomendando que agregue una capacidad 'level_1' a su nueva función para solucionar esto. Esta no es una solución limpia, pero es mucho más fácil que crear un filtro y todo el HTML desde cero.

EDITAR: Una tercera e incluso más sencilla solución justa vino a la mente: he creado papeles personalizados con los plugins, pero nunca di cuenta de este problema porque siempre estaba capacidades de copia de las funciones existentes y luego modificarlos. De esta forma, no olvidará ninguna capacidad y también solucionará este error.

+1

+1 para el enlace al error de WP –

+0

De acuerdo, agregué una capacidad de nivel 1, pero no ayudó . ¿Cómo podría copiar capacidades de un rol existente? No puedo pensar en una buena manera de hacerlo. – Sean

+0

Asegúrese de haber eliminado la función personalizada creada anteriormente porque add_role no hace nada si la función ya existe (por lo tanto, su 'si' no es necesario). De todos modos, así es como lo hice: http://wordpress.org/support/topic/creating-a-role-based-on-another?replies=2, y otro ejemplo: http://wordpress.org/support/ tema/add-a-custom-role-based-on-default-role? respuestas = 1 –

Cuestiones relacionadas