Benutzer dürfen nur ihre Seite und die von niemand anderem bearbeiten

7

Wir haben derzeit ungefähr 50 Seiten, von denen ich möchte, dass ein Benutzer (z. B. Bob, Rob, Smith) nur 1 Seite bearbeiten kann. Zum Beispiel haben Bob & Smith jeweils eine eigene Seite. Ich möchte nicht, dass Bob die Schmiedeseite bearbeiten kann. Ich möchte, dass Bob NUR die Seite von Bob bearbeiten kann. Es ist mir egal, ob er andere Seiten sehen kann. Wenn ich mir die Benutzerrollen ansehe, sehe ich derzeit keine Möglichkeit, dies zu tun. Ich sehe nur, wie man den Zugriff auf globaler Ebene einschränkt.

Gibt es Plugins, mit denen der Bearbeitungszugriff pro Benutzer eingeschränkt werden kann, oder Rollen, die auf die Bearbeitung bestimmter Seiten beschränkt sind, und ich kann nur 1 Benutzer pro Rolle hinzufügen? Oder gab es eine Möglichkeit, dies mit Standardeinstellungen zu tun, die ich verpasst habe?

Zealeus
quelle
1
Die Rolle des Mitwirkenden ermöglicht nur die Bearbeitung eigener Beiträge. Oder Sie können eine benutzerdefinierte Rolle erstellen.
Brad Dalton

Antworten:

9

Sie können dies zu Ihrer functions.phpDatei in Ihrer Vorlage hinzufügen , damit der Benutzer die von ihm erstellten Seiten bearbeiten und Medien verwalten kann. Geben Sie einfach ihre $user_id(dh 27) an:

function add_theme_caps() {
    // to add capability to $user_id
    $user = new WP_User( $user_id );
    $user->add_cap( 'edit_pages' );
    $user->add_cap( 'edit_published_pages' );
    $user->add_cap( 'upload_files' );
}
add_action( 'admin_init', 'add_theme_caps' );

Sie können einen bestimmten Benutzer $user_idüber die URL finden, wenn Sie einen bestimmten Benutzer auf der Wordpress-Administrationsseite bearbeiten.

Die vollständige Liste der Wordpress-Funktionen finden Sie hier .

Wenn Sie die integrierte Rolle lieber ändern möchten contributor, damit alle Benutzer mit der contributorRolle die von ihnen erstellten Seiten ändern können:

function add_theme_caps() {
    // to add capability to the role `contributor`
    $role = get_role( 'contributor' );
    $role->add_cap( 'edit_pages' );
    $role->add_cap( 'edit_published_pages' );
    $role->add_cap( 'upload_files' );
}
add_action( 'admin_init', 'add_theme_caps' );
Brendan Nee
quelle
4

Role Scope ist sehr mächtig, aber ich denke, es ist übertrieben. Wenn Sie Bob und Smith als Autor festlegen (eine der Standardrollen), können sie nur ihre eigenen Beiträge bearbeiten.

Adam Rice
quelle
0

Sie können auch einfach die WP-Tabelle bearbeiten. Es schien, als würde phpAdmin ein schnellerer Weg sein.

Der Tisch ist

wp_usermeta

Suchen Sie nach der Benutzer-ID und ändern Sie den Wert für

wp_capabilities

und setze es auf so etwas wie

a:4:{s:11:"contributor";b:1;b:1;s:10:"edit_pages";b:1;s:20:"edit_published_pages";b:1;s:12:"upload_files";b:1;}

Ich fand, dass http://www.unserialize.me/ eine Hilfe ist, um sicherzustellen, dass die Serialisierung korrekt ist (und ich gehe davon aus, dass es auch andere Websites gibt).

Fred Andrews
quelle