2012-04-18 1 views
7

Sto lavorando su un sistema per temps/part-timer utilizzando Wordpress. Per andare su questo sto facendo un nuovo tipo di messaggio personalizzato DIPENDENTI e ho bisogno di 2 corrispondente utenti AGENTE ei compratori di esso:Come impostare ruoli utente semplici per Wordpress Tipo di messaggio personalizzato

utente
  • L'agente può creare e modificare suo IMPIEGATO (s), ma non modificare il/i DIPENDENTE/i di altri AGENTI.
  • Il post dipendente può essere visto e commentato da tutti gli agenti, i clienti e il pubblico in generale,
  • che implica anche che l'utente cliente può solo vista tutti i messaggi dei dipendenti.
  • L'utente CLIENTE deve essere differenziato dal pubblico in generale perché una volta che assumono un DIPENDENTE, il sistema deve associarli al DIPENDENTE, quindi la necessità per il CLIENTE di essere un utente registrato.
  • Infine, sia gli utenti AGENT che i CLIENTI possono creare creare/modificare i propri profili utente WordPress vaniglia e accedere con la combinazione di nome utente/password.

Come si esegue questo accordo? La documentazione online sugli utenti e le funzionalità mi ha fatto tirare i capelli e correre in cerchio. Finora, ecco la mia registrazione del tipo di messaggio personalizzato, e sto attualmente impostare le caselle di meta per altre informazioni per questo tipo di messaggio:

register_post_type('employee', 
    array(
     'labels' => array(
      'name' => __('Employees','tdom'), 
      'singular_name' => __('Employee','tdom'), 
      'add_new' => __('Add New'), 
      'add_new_item' => __('Add New Employee'), 
      'edit' => __('Edit'), 
      'edit_item' => __('Edit Employee'), 
      'new_item' => __('New Employee'), 
      'view' => __('View Employee'), 
      'view_item' => __('View Employee'), 
      'search_items' => __('Search Employees'), 
      'not_found' => __('No Employees found'), 
      'not_found_in_trash' => __('No Employees found in Trash'), 
      'parent' => __('Parent Employee') 
     ), 
     'public' => true, 
     'show_ui' => true, 
     'query_var' => true, 
     'menu_icon' => get_stylesheet_directory_uri() . '/images/emp_icon.png', 
     'menu_position' => 4, 
     'capability_type' => 'post', 
     'hierarchical' => false, 
     'rewrite' => true, 
     'supports' => array('title', 'thumbnail', 'author') 
    ) 
); 

ho incontrato Members plug-in di Justin Tadlock (molto popolare su Google e forum), ma speravo che i miei requisiti fossero abbastanza semplici da non usare più un plugin. È anche un po 'troppo per girare la testa.

Help. Grazie in anticipo.

+0

Consiglierei un plug-in, è abbastanza complicato – janw

+0

** Nota per le mod **: questa domanda sarebbe più adatta per WPSE. –

risposta

4

Questo davvero non dovrebbe essere terribilmente difficile.

Il primo passo è quello di creare un personalizzato tipo di capacità per corrispondere al tipo di messaggio personalizzato, attraverso il parametro 'capability_type' passato a register_post_type(). State usando il default, vale a dire:

'capability_type' => 'post', 

Set che ad altro, forse 'employee', e secondo il Codice, anche impostare 'map_meta_cap' a true:

'capability_type' => 'employee', 
'map_meta_cap' => true, 

Il passo successivo è quello di aggiungere le relative funzionalità per gli utenti personalizzati, tramite il parametro $capabilities passato alla chiamata a add_role(). Per il ruolo utente "dipendente", ti consigliamo di aggiungere edit_employee e altri (edit_, delete_, ecc.) E per il ruolo utente "agente", ti consigliamo di includere edit_employee e altri, insieme a edit_others_employee e al .

+0

grazie a @Chip! lavorerò su questo e ti darò una testa a testa una volta che lo faccio funzionare o mi imbatto in un posto di blocco. grazie ancora –

+0

ciao @Chip sto lavorando di nuovo su questa parte del mio codice. così 'domanda più spinosa, scusa se nobbish: D quindi dove metto la mia chiamata 'add_role()'?nel mio 'functions.php' dopo aver creato il tipo di post? tia –

+0

Si consiglia di inserirlo nello stesso callback che include la chiamata alla funzione 'register_post_type()'. –