Benutzerverwaltung

  • Ich möchte eine Website mit 4 Custom Post Types erstellen.
    40-60 Benutzer sollen die Möglichkeit haben, dort Ihre Angebote einzutragen, bsp: Name, Datum, Ort, Kurzbeschreibung.
    Jeder Benutzer kann in jeden der 4 CPT Einträge erstellen.

    Die Frage dabei ist:
    Ließe sich die Benutzerverwaltung so einstellen, dass jeder Benutzer im Backend nur seine eigenen Einträge sieht und nicht die der anderen?

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Eine Einstellung dazu ist mir nicht bekannt, du könntest aber in der functions.php festlegen, welche Posts für bestimmte Rollen und damit den entsprechenden Nutzer angezeigt werden.

    Da musste halt schauen, was für Rollen du hast und wer was sehen/bearbeiten können soll und das entsprechend in der Funktion unten anpassen.

  • Welche Rolle haben die Benutzer?


    Die geringstnötige für den Anwendungsfall. Ich denke, das würde dann also die Rolle "Autor" sein, um eigene Beiträge zu erstellen, Bilder dazu hochladen zu können und die Beiträge anderer Benutzer nicht ändern zu können.

  • das würde dann also die Rolle "Autor" sein, um eigene Beiträge zu erstellen, Bilder dazu hochladen zu können und die Beiträge anderer Benutzer nicht ändern zu können.

    Die Antwort lässt darauf schliessen, dass wohl noch gar nichts versucht wurde. Die "Autor" Rolle kann Beiträge und Medien anderer Benutzer nicht ändern. Wenn der Autor auch nur die eigenen Beiträge und Medien sehen können soll, könnte man z.B. sowas verwenden:

    PHP
    add_action( 'pre_get_posts', function ( $query ) {
       if ( is_admin() && in_array( 'author', ( array ) ( $user = wp_get_current_user() )->roles ) ) {
           $query->set( 'author', $user->ID );
       }
    });


    Der Code beeinflusst alle Post Types, also auch Custom Post Types.

  • Hey Leute, ich bin gerade etwas irritiert. Habe gerade eine Testumgebung aufgebaut und 2 Benutzer mit Rolle "author" eingerichtet. Dann habe ich über beide Benutzer je einen Post erstellt. Ergebnis: beide Benutzer sehen nur IHRE Posts und nicht die der anderen. Also genau so, wie ich es ja haben wollte. Aber ich hatte noch gar keinen Code von @svenbolz oder @b3317133 eingesetzt. :oops:

    Es scheint also, ich benötige gar keinen Code und die gewünschte Funktion ist bereits gegeben? Hätte ich natürlich vorher testen können, aber ich bin irgendwie wie selbstverständlich davon ausgegangen, dass Autoren auch alle Einträger anderer Autoren sehen und gebraucht habe ich die Bennutzerrolle auch noch nie. :D

  • Ergänzung:
    Stelle gerade fest: Wenn ein Benutzer mit Rolle "author" sich das erste Mal anmeldet, so sieht er die Posts aller anderen Benutzer. Aber sobald er einen eigenen Beitrag erstellt, sieht er nur noch seinen eigenen.

  • Wenn die Autoren-Rolle ausreicht, ist ja super :)

    Die Editor-Rolle sieht immer alle Posts. Wenn du das für die hättest ändern wollen, hättest du Anpassungen machen müssen.

  • Wenn der Autor oberhalb der Beiträge Liste auf "Alle" statt "Meine" klickt, sieht der Autor auch die anderen Posts. Auch im Dashboard in der "Aktivität" Box unter "Kürzlich veröffentlicht" sieht er die anderen Posts.

    Mit meinem Code sieht er auch hier nur seine eigenen Posts.

  • Wenn der Autor oberhalb der Beiträge Liste auf "Alle" statt "Meine" klickt


    Oh Man! Du hast natürlich recht. Das hatte ich übersehen, dass WP hier standardmäßig auf "mine" eingestellt ist.
    In dem Fall helfen die genannten Codes also doch bzw. wären notwendig. Ich habe beide Codes getestet und beide funktionieren. Da der Code von @b3317133 sehr viel schlanker ist, gebe ich diesem den Vorzug.

    Danke vielmals allen Helfern! :)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!