2011-06-13 2 views
5


Ho una personalizzato tipo di utente in Wordpress, il post di tipo personalizzato supporta Autori (Vedi sotto). Il tipo di utente personalizzato ha tutti i privilegi di un autore ad eccezione di "pubblica post", ma è non nell'elenco di possibili autori da assegnare al post.WordPress: gli utenti personalizzati non indicato nella casella Autore

Cosa sto sbagliando?

Codice:

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 
     )); 
} 

e qui è il tipo di messaggio personalizzato:

$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'); 

} 

fatemi sapere se sono necessarie ulteriori informazioni.

+0

I privilegi dell'utente funzionano in wp-admin? il modo in cui te lo aspetti? ... Inoltre stai usando un tema/widget personalizzato per mostrare il nome dell'autore quando viene pubblicato ?, mostra un valore errato? o semplicemente vuoto. Ci sono molti modi in cui questo potrebbe essere stato errato tristemente = [ – PicoCreator

+0

Anche quali file i frammenti di codice provengono da = P – PicoCreator

risposta

6

Gli autori discesa viene creato il seguente invito:

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

L'argomento who significa che solo gli utenti con almeno 'autore' ruolo saranno elencati, e the Codex page dice che attualmente è sia 'autori' o vuote (che significa tutti gli utenti). C'è un filtro per questa funzione ma accetta l'HTML come input. È possibile creare una nuova query per gli utenti e quindi generare un nuovo menu a discesa HTML. Questo è il primo modo per risolvere il tuo problema.

Tuttavia, questa funzione con "chi" è impostata su "autori" ricerca gli utenti il ​​cui livello non è 0, il che è piuttosto strano poiché i livelli utente sono stati deprecati molto tempo fa. Ho trovato a related bug report su Trac che ti consiglia di aggiungere al tuo nuovo ruolo per risolvere il problema con la funzione 'level_1'. Questa non è una soluzione pulita ma molto più semplice della creazione di un filtro e di tutto l'HTML da zero.

EDIT: Un terzo e ancor più semplice soluzione giusta è venuta in mente: ho creato ruoli personalizzati con i plugin, ma mai notato questo problema perché ero sempre funzionalità di copia da ruoli esistenti e poi modificarli. In questo modo non dimenticherai nessuna funzionalità e risolverà anche questo bug.

+1

+1 per il collegamento al bug WP –

+0

Ok, ho aggiunto una funzionalità level_1, ma non è stato d'aiuto . Come posso copiare le funzionalità da un ruolo esistente. Non riesco a pensare ad un modo pulito per farlo. – Sean

+0

Assicurati di aver rimosso il ruolo personalizzato precedentemente creato perché add_role non esegue nulla se il ruolo esiste già (quindi il tuo "se" non è necessario). Ad ogni modo, ecco come l'ho fatto: http://wordpress.org/support/topic/creating-a-role-based-on-another?replies=2, e un altro esempio: http://wordpress.org/support/ argomento/add-a-custom-ruolo-basato-su-predefinito-ruolo? replies = 1 –