2012-04-18 13 views
7

Ich arbeite an einem System für temps/Teil-Timer mit Wordpress. diese gehen über ich eine neue benutzerdefinierte Post Typ Mitarbeiter machen und ich brauche 2 entsprechenden Benutzer Agenten und Kunden für sie:So richten Sie einfache Benutzerrollen für Wordpress ein Benutzerdefinierte Beitragsart

  • Der AGENT Benutzer erstellen und bearbeiten seine eigenen Mitarbeiter (innen) können, aber bearbeiten Sie NICHT die MITARBEITER anderer AGENT (s).
  • kann der Beitrag EMPLOYEE sein und auf von allen Agenten, Kunden und der Öffentlichkeit,
  • kommentiert betrachtet, die, dass die einzige Ansicht alle Beiträge EMPLOYEE bedeutet auch können Benutzer CUSTOMER.
  • Der KUNDE-Benutzer muss von der allgemeinen Öffentlichkeit unterschieden werden, denn sobald er einen MITARBEITER anstellt, muss das System ihn dem MITARBEITER zuordnen, so dass der KUNDE ein angemeldeter Benutzer sein muss.
  • Schließlich können sowohl AGENT als auch KUNDE Benutzer erstellen/bearbeiten ihre eigenen Vanille Wordpress-Benutzerprofile und Anmeldung mit ihrer Benutzername/Passwort-Kombination.

Wie führe ich diese Anordnung aus? Die Online-Dokumentation über Benutzer und Fähigkeiten ließ mich an den Haaren ziehen und im Kreis rennen. Bisher ist hier meine benutzerdefinierte Post-Typ-Registrierung, und ich bin derzeit die Meta-Boxen für andere Informationen für diesen Beitrag Art der Einrichtung:

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

ich Members Plugin über Justin Tadlock die gekommen sind (sehr beliebt bei Google und Foren), aber ich hatte gehofft, dass meine Anforderungen einfach genug sind, kein Plugin mehr zu verwenden. Es ist auch ein bisschen zu viel, um meinen Kopf herumzulegen.

Hilfe. Danke im Voraus.

+0

Ich würde ein Plugin empfehlen, es ist kompliziert genug – janw

+0

** Hinweis zu Mods **: Diese Frage wäre eine bessere Lösung für WPSE. –

Antwort

4

Das sollte wirklich nicht schrecklich schwierig sein.

Der erste Schritt ist eine individuelle Fähigkeit Art zu schaffen, um Ihren benutzerdefinierten Post Typen zu entsprechen, über die 'capability_type' Parameter register_post_type() geben. Sie verwenden den Standard, das heißt:

'capability_type' => 'post', 

Set, dass auf etwas anderes, vielleicht 'employee', und gemäß dem Codex, stellen auch 'map_meta_cap' zu true:

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

Der nächste Schritt ist hinzuzufügen die zugehörigen Funktionen für Ihre benutzerdefinierten Benutzer über den Parameter $capabilities, der an Ihren Anruf an übergeben wurde. Für die Benutzerrolle "employee" möchten Sie edit_employee et al hinzufügen (edit_, delete_, usw.), und für die Benutzerrolle "agent" möchten Sie edit_employee et al., Zusammen mit edit_others_employee et al .

+0

danke @Chip! Ich werde daran arbeiten und Ihnen einen Kopf geben, sobald ich es zur Arbeit bekomme oder ich in eine Straßensperre gerate. danke nochmal –

+0

hi @Chip arbeite wieder an diesem Teil meines Codes. so 'narrige Frage, sorry wenn nobbish: D so wo lege ich meine 'add_role()' Anruf?in meiner 'functions.php' nach dem Erstellen des Beitragstyps? tia –

+0

Ich würde empfehlen, es in den gleichen Callback zu setzen, der den Funktionsaufruf 'register_post_type()' beinhaltet. –

Verwandte Themen