Best Practice für das Anzeigen von Daten für einen bestimmten Benutzer?

Ich versuche, eine gesperrte Seite in WordPress (über ein Plugin) zu erstellen, die unterschiedliche Daten anzeigt, je nachdem, wer sich anmeldet. Im Wesentlichen hat es drei Bildschirme, wie folgt:

  1. Wenn Sie sich als Administrator anmelden (oder jemanden mit Administratorrechten), wird nur ein Bildschirm mit Informationen und functionen für den Administrator angezeigt.
  2. Wenn Sie sich als Standardbenutzer anmelden (erstellt von admin), gelangen Sie auf eine private Registrierungsseite.
  3. Wenn Sie sich mit einem registrierten Konto anmelden, wird Ihnen ein Datei-Uploader angezeigt.

Die Art, wie ich das tue, ist mit einer if elseif else statement; wie if (current_user_can( 'manage_options' )): 1, elseif ( 2 == $current_user->ID ): 2, else: 3, endif; .

Was ich mich wundere ist, ob die Art, wie ich die zweite function nenne, Best Practice ist, oder ob es eine bessere / sicherere Methode gibt, dies zu tun? Danke für jede Hilfe! 😉

Solutions Collecting From Web of "Best Practice für das Anzeigen von Daten für einen bestimmten Benutzer?"

Um zu überprüfen, ob ein Benutzer ein bestimmter Benutzer ist, haben Sie 4 Möglichkeiten:

  • überprüfe die ‘ID’
  • Sieh dir den nicename an (slug)
  • Überprüfen Sie die E-Mail
  • Überprüfen Sie die Benutzeranmeldung

Alle diese 4 Felder sind für jeden Benutzer einzigartig.

Also, überprüfen Sie die ID ist eine Option, aber ist das Schlimmste: wenn create, dass Benutzer admin nicht die ID kennt, er hatte die ID, nachdem er Benutzer erstellt hat, so können Sie Ihren Code schreiben, nachdem der Benutzer erstellt wird. .. das ist schlecht.

Die anderen 3 Optionen sind ein bisschen (nur ein bisschen) besser: Sie können den Code vor dem Erstellen des Benutzers wite, EG:

 if ( 'standard_user' === $current_user->user_nicename ) { // do something } 

Danach muss der Administrator den Benutzer erstellen, aber daran denken, 'standard_user' als Benutzer nicename zu verwenden.

Allerdings, wenn Sie nach Best Practice fragen, kann ich nicht sagen, es ist eine Best Practice, weil es eine Hardcoding benötigt: Sie schreiben in Code etwas, das zu arbeiten braucht den Admin, wenn Benutzer einen bestimmten String schreiben … und wenn ein Tipperrors geschehen? Wenn der Administrator sich nicht genau erinnert, welche Zeichenfolge zu verwenden ist?

Wenn Sie den Code für sich selbst schreiben, kann dieser mit wenig Mühe verwendet werden, aber wenn Sie dies für jemand anderen schreiben (einen Kunden?) Oder Sie Ihren Code verteilen möchten, sollten Sie es auf eine andere Weise tun.

Es gibt verschiedene Möglichkeiten, dies ist eine:

Zuallererst müssen Sie überlegen, welche Rolle Sie normalerweise zu diesem bestimmten Standardbenutzer hinzugefügt haben.

Angenommen, der Benutzer sollte ein Mitwirkender sein.

Bei der Aktivierung des Plug-Ins erstellen Sie eine benutzerdefinierte function zum Klonen von Rollen.

 function myplugin_install() { $contributor = get_role('contributor'); $standard = add_role( 'standard', 'Standard User', $contributor->capabilities ); } register_activation_hook( __FILE__, 'myplugin_install' ); 

Schreiben Sie danach Ihr Problem so:

 $user = wp_get_current_user(); if ( user_can($user, 'manage_options') ) { // code for admin } elseif ( in_array( 'standard', $user->roles ) ) { // code for your standard user } else { // code for others } 

Wenn der Administrator nun den Standardbenutzer erstellt, muss er im Drop-down-Menü der Benutzerrolle nur “Standardbenutzer” auswählen.

PS: Denken Sie daran, Ihre benutzerdefinierte Rolle bei der Deaktivierung des Plugins zu entfernen:

 function myplugin_unistall() { remove_role( 'standard' ); } register_deactivation_hook( __FILE__, 'myplugin_unistall' );