Support » Themes » add_menu_page Editor speichern ermöglichen

  • Hi,

    ich hab ein eigenes Menu erstellt, stoße aber bei den Berechtigungen an meine Grenzen. Die Editoren sollen die Möglichkeit erhalten die Punkte im Menu zu bearbeiten, allerdings möchte ich darauf verzichten, die managed_options zu vergeben, weil dann automatisch der Zugriff auf die Einstellungen gewährt wird.

    Hat jemand eine Idee wie ich das ganze Szenario mit den managed_options umgehen kann, ohne das die Editoren Zugriff auf die Einstellungen bekommen?

    Danke im Vorraus 😉

    • Dieses Thema wurde geändert vor 5 Jahren, 5 Monaten von kulle4189.
Ansicht von 7 Antworten - 1 bis 7 (von insgesamt 7)
  • Hallo @kulle4189 und willkommen im Forum,

    bei der Vergabe der Rechte für diese Menüseite bist du ja frei.

    Eine Übersicht der „Roles and Capabilities“ (Rechte und Möglichkeiten) findest du im Codex: https://codex.wordpress.org/Roles_and_Capabilities

    Möchtest du z.B. einem Editor Zugriff gewähren, Autoren und Abonnenten aber nicht, suchst du aus der Tabelle die Capability heraus, die nur Editoren und höher haben, also z.B. moderate_comments.

    Also sinngemäß (die anderen Felder habe ich ausgelassen):

    add_menu_page( 
      $page_title, 
      $menu_title, 
      $capability = 'moderate_comments', 
      $menu_slug, 
      $function = '', 
      $icon_url = '', 
      $position = null );
    Thread-Starter kulle4189

    (@kulle4189)

    Danke für deine Antwort!

    Wird das dann auf die Fields vererbt?

    Nein, du wirst ja die Eingabe validieren und bereinigen und dabei auch prüfen, ob der User das Formular überhaupt sehen darf.

    Thread-Starter kulle4189

    (@kulle4189)

    Okay dann liegt da mein Problem. Über welche var kann ich das beeinflussen? Beim Speichern kommt das ich keine Berechtigung habe!

    Also der Editor!

    • Diese Antwort wurde geändert vor 5 Jahren, 5 Monaten von kulle4189.
    Thread-Starter kulle4189

    (@kulle4189)

    Vielleicht hilft es wenn ich es beschreibe:

    ich habe eine Checkbox und ein Textfeld. Die Checkbox aktiviert, wird im Frontend über eine Schleife abgefragt und erzeugt ein Social-Media-Icon, auf das der Link von der entsprechenden Seite gelegt wird.

    Der Editor sieht das Feld und kann es ändern, allerdings kann er es nicht speichern, was ja aus meinem Verständnis mit dem Zugriff auf die Datenbank zutun hat. Laut Codex habe ich beim add_settings_field keine Möglichkeit die capability einzustellen oder anzugeben. Von daher meine Frage gibt es eine Möglichkeit das Speichern zu erlauben ohne die managed_objects zu vergeben und damit die Tür zu öffnen …

    Nur mit deiner Beschreibung („ich habe eine Checkbox und ein Textfeld“) lässt sich das ein wenig schwierig nachvollziehen. 🙂

    Ich nehme mal das Beispiel aus der Codex-Seite Administration Menus:

    <?php
    /** Step 2 (from text above). */
    add_action( 'admin_menu', 'my_plugin_menu' );
    
    /** Step 1. */
    function my_plugin_menu() {
    	add_options_page( 'My Plugin Options', 'My Plugin', 'manage_options', 'my-unique-identifier', 'my_plugin_options' );
    }
    
    /** Step 3. */
    function my_plugin_options() {
    	if ( !current_user_can( 'manage_options' ) )  {
    		wp_die( __( 'You do not have sufficient permissions to access this page.' ) );
    	}
    	echo '<div class="wrap">';
    	echo '<p>Here is where the form would go if I actually had options.</p>';
    	echo '</div>';
    }
    ?>

    (add_menu_page() fügt einen Menü-Punkt im Backend ein, der irgendwo zwischen Dahsboard, Beiträgen, Seiten und Einstellungen eingefügt wird,
    add_options_page() fügt ein Untermenü im Menüpunkt Einstellungen ein,
    ansonsten unterscheiden sich die beiden Funktionen wenig.)

    In „Step 1“ des Beispiels wird der neue Menüeintrag für eine Administrationsseite „My Plugin Options“ angelegt. Die Benutzerrechte wurden in dem Beispiel auf manage_options gesetzt, weil davon ausgegangen wird, dass nur Administratoren auch entsprechende Einstellungen vornehmen dürfen. (Eine Möglichkeit das zu umgehen wäre, neue Benutzer einzurichten und ihnen die Fähigkeit zu geben, Optionen zu verwalten – das gilt dann aber für alle Optionen! Eine weitere Möglichkeit wäre, die erforderlichen Fähigkeiten herabzusetzen, damit auch Redakteure die Einstellungsseite zunächst sehen: add_options_page( 'My Plugin Options', 'My Plugin', 'moderate_comments', 'my-unique-identifier', 'my_plugin_options' );)

    Die Funktion add_options_page() enthält (wie add_menu_page()) ein Callback, mit dem die Ausgabe auf der neuen Menü-Seite gesteuert wird. In diesem Beispiel ist das unter „Step 3“ die Funktion my_plugin_options(). Hier wird vor der Ausgabe der Seite nochmal geprüft, welche Rechte der angemeldete Benutzer hat:

    
    if ( !current_user_can( 'manage_options' ) )  {
    		wp_die( __( 'You do not have sufficient permissions to access this page.' ) );
    }

    bedeutet sinngemäß „Wenn der angemeldete Benutzer nicht „XYZ“ kann (wobei du hier ebenfalls moderate_comments eintragen kannst), gibt eine Meldung aus, dass die Benutzerrechte nicht ausreichen und brich die weitere Ausgabe ab.“ Damit hast du dann schon dein User-Handling.

    Im weiteren Verlauf der Codex-Seite gibt es <;a href=“https://codex.wordpress.org/Adding_Administration_Menus#Sample_Menu_Page“>noch ein Code-Beispiel, in dem dann die Eingabe eines Formulars in die Datenbank übernommen wird. Auch hier wird aber vorher abgefragt, welche Rechte der Benutzer hat. (Schau dir dazu den Kommentar über der Funktion an: //must check that the user has the required capability.)

    Kannst du damit was anfangen?

    Thread-Starter kulle4189

    (@kulle4189)

    Danke dir für die Beschreibung und die Zeit, die du investiert hast, ich habe das auf der Codex-Seite total falsch verstanden gehabt und mit deiner Erklärung kommt licht ins Dunkel, ich werde es mal auf mein System umschreiben … Nochmals Danke

Ansicht von 7 Antworten - 1 bis 7 (von insgesamt 7)
  • Das Thema „add_menu_page Editor speichern ermöglichen“ ist für neue Antworten geschlossen.