Ermöglichen Sie dem Mitglied nur den Zugriff auf den benutzerdefinierten Beitragstyp. Erlaubnis, nur eigene Beiträge zu bearbeiten
4 Antworten
- Stimmen
-
- 2011-04-12
Verwenden Sie das Plugin von Justin Tadlock " Members ". Sie könnenneue Rollenerstellen und vorhandene Rollenbearbeiten sowiebenutzerdefinierte Funktionen hinzufügen. Alles,was Sietunmüssten,kannmit wenigen Klickserledigt werden.
Ich weiß,dass Siein Ihrem Kommentar zu ZaMooses Antwortgesagt haben,dass Sie "die Funktionalität selbst schreibenmöchten,damitich die volle Kontrolle über alles habe". Dasist der springende Punktbei Open Source-Software. Justin Tadlock hat sein Plugin veröffentlicht,damit Sieesgenau verwenden können,damit Sie die vollständige Kontrolle über alles haben.
Wenn Sie das Rad wirklich wirklich neuerfindenmöchten undmöglicherweise Hunderte von Stunden Ihrereigenen Zeit verschwendenmöchten,kannich Sienicht aufhalten,aber Sie könnten sich zumindest die Mühe sparen und das Tadlock-Plugin verwenden Erfahren Sie,wie Sie dastun,was Sie wollen.
Sobald Sieein Plugin haben,das dastut,was Sie wollen,müssen Sie das Flag
'map_meta_cap'
intrue
und den'Capability_type' <ändern/code> Flagin Ihrer Post-Typ-Registrierungsfunktion,sodassetwas anderes als "Post","Seite" oderein anderer "reservierter" Typ angezeigt wird. Duplizieren Sie dann alle Funktionen,die sich auf Postsbeziehen (z. B.
edit_posts
,edit_others_posts
,Publish_posts
usw.),indem Sie Ihren Funktionstyp anstelle von Posts verwenden. Stellen Sie sicher,dass Sie Administratoren alle diese Berechtigungen zuweisen (der Beitragstyp wirderst angezeigt,wenn Sie diestun),understellen Sie dann Ihre Rolle,wobei Sie die Fähigkeiten der Rolle des Mitwirkendenfür Ihren Beitragstypnachahmen.Angenommen,Ihr Funktionstyp war
foobars
. Siemöchten "Ladenbesitzern" dieedit_foobars
,delete_foobars
undLesen . Auf diese Weise können sieihreeigenen Entwurfs-Foobarserstellen und diese Entwürfe löschen. Da siejedochnicht über die Funktionen Publish_foobars
verfügen,müssen sie diese zur Genehmigungeinreichen. Da sie keineedit_published_foobars
haben,müssen alle Änderungen aneinergenehmigtenfoobargenehmigt werden.Use Justin Tadlock's plugin "Members". It gives you the ability to create new roles and edit existing roles, as well as add custom capabilities. All that work that you'd have to do can be taken down to a few clicks.
I know you said in your comment on ZaMoose's answer that you are 'looking to write the functionality myself so I have full control over everything.' That's missing the whole point of open source software. Justin Tadlock released his plugin so you could use it precisely so you WOULD have complete control over everything.
If you really really want to reinvent the wheel, potentially wasting hundreds of hours of your own time I can't stop you, but you could at least save yourself the trouble and use Tadlock's plugin to learn how to do what you want.
Once you have a plugin that does what you want, you'll need to change the
'map_meta_cap'
flag totrue
and the'capability_type'
flag in your post type registration function so that it says something other than 'post', 'page', or any other 'reserved' type. Then, duplicate all the capabilities related to posts (e.g.edit_posts
,edit_others_posts
,publish_posts
, etc.), using your capability type instead of posts. Make sure to assign all these permissions to administrators (you won't be able to see the post type until you do this), then create your role, mimicking the 'contributor' role's abilities for your post type.For example, say your capability type was
foobars
, you would want to give 'shop owners' theedit_foobars
,delete_foobars
, andread
capabilities. That way they can create their own draft foobars, and delete those drafts, but because they don't havepublish_foobars
capabilities, they have to submit them for approval. Because they don't haveedit_published_foobars
, all modifications to an approved foobar have to be approved.-
OK,ich verwendejetzt das Mitglieder-Plugin,umeinen Überblick über die Funktionsweise der Mitgliederberechtigungen zuerhalten.Ich habe "map_meta_cap"=>true "und" Capability_type "=>" Shopowner "fürmeinen benutzerdefinierten Beitragstypfestgelegt.Ich habeeine neue Rollemit dem Namen "ShopOwner"erstellt undihr die Funktionen "Lesen","Edit_shopowner" und "Delete_shopowner" zugewiesen.Stellen Sieeinen Benutzer auf die Rolle von ShopOwnerein undmelden Sie sichmit diesem Benutzer an.Dieser Benutzer kann denbenutzerdefinierten Beitragstypnicht sehen.Habeichetwas verpasstOK im using Members plugin now to get a jist of how member permissions work. I have set `'map_meta_cap' => true` and `'capability_type' => 'shopowner'` on my custom post type. I have created a new role called `ShopOwner` and given it the capabilities of read, edit_shopowner, delete_shopowner. Set a user to the role of ShopOwner and logged in with that user. That user cannot see the custom post type. Have I missed something?
- 0
- 2011-04-12
- Scott
-
Ändern Sie diesein "edit_shopowners" und "delete_shopowners".`edit_shopowner` und` delete_shopowner` sind Metafunktionen,gegen dieniemalsgeprüft wird.Sie werden überprüft,wennjemand versucht,ein bestimmtes Element zubearbeiten oder zu löschen,und am Ende Dinge wie "Kann dieser Benutzer diese Art von Elementen löschen? Können sienurihreeigenen oder auch andere löschen? Können sie veröffentlichte Elemente löschen?"usw.change those to `edit_shopowners` and `delete_shopowners`. `edit_shopowner` and `delete_shopowner` are meta capabilities that are never actually checked against. They're checked when somebody tries to edit or delete a specific item, and end up checking things like "Can this user delete these types of items? Can they only delete their own or others too? can they delete published items?" etc.
- 2
- 2011-04-12
- John P Bloch
-
Ich konnte dasnicht verstehen ... aberich habe die Funktionalitäterhalten,dieich suche,indemich Funktionenin meinembenutzerdefinierten Beitragstypfestgelegt und diese Funktionenim Mitglieder-Pluginerstellt habe.Ich habe Ihnen die Antwortengegeben,da Ihr Beitragfürmich amnützlichsten war,umeine Lösung zusammenzustellen.Vielen DankI couldnt make any sense of that... but I got the functionality I'm after by setting capabilities in my custom post type and creating those capabilities in members plugin. I've awarded you the answers as your post was the most useful for me to piece a solution together. Thanks
- 0
- 2011-04-12
- Scott
-
- 2011-04-12
Der Registerpost-Typ verfügt übereinen Parameternamens "Funktionen",den Siebeispielsweise
verwenden können'capability' => 'organize_shop',
http://codex.wordpress.org/Function_Reference/register_post_type
Umeinen neuen Benutzer/eine neue Rolle/Funktion zuerstellen,können Sie add_role,add_cap,verwenden,umein einfaches Beispielfür den Einstieg zuerhalten:
// Add the role to WordPress list of roles // Then add the capability 'organize_shop' to the 'shop_owner' role $role = add_role( 'shop_owner', 'Shop Owner', ['edit_posts' => true])); $role->add_cap( 'organize_shop' ); // If 'shop_owner' already exists make `$wp_roles` visible then // add the capability 'organize_shop' to the 'Show Owner' role public $wp_roles; $wp_roles->add_cap( 'shop_owner', 'organize_shop' );
The register post type has a parameter called "capabilities" so you can have for instance
'capability' => 'organize_shop',
http://codex.wordpress.org/Function_Reference/register_post_type
To create a new user/role/capability you can use add_role, add_cap, for a simple example to get you started:
// Add the role to WordPress list of roles // Then add the capability 'organize_shop' to the 'shop_owner' role $role = add_role( 'shop_owner', 'Shop Owner', ['edit_posts' => true])); $role->add_cap( 'organize_shop' ); // If 'shop_owner' already exists make `$wp_roles` visible then // add the capability 'organize_shop' to the 'Show Owner' role public $wp_roles; $wp_roles->add_cap( 'shop_owner', 'organize_shop' );
-
hmm ...ichbin einbisschen verwirrt wasist der Unterschied zwischen 2 und 3 Zeilen?: S Fügtes der Rolle "Ladenbesitzer"nicht diegleiche Funktion hinzu?hmm... I'm a bit confused what's the difference between 2 and 3 lines? :S Doesn't it add the same capability to the 'Shop Owner'role?
- 0
- 2011-09-13
- dashaluna
-
Ja,sie sind diegleichen,aber sie zeigen verschiedene Möglichkeiten,dies zutun. Dieersteenthält die Rolle alsersten Parameter (Ladenbesitzer),die zweitenur die Obergrenze,da die Rolle $ verwendet wird.Yes they are the the same but they show diff ways to do it, first one includes the role as first parameter ( Shop Owner), second one just the cap since it is using $role.
- 0
- 2011-09-13
- Wyck
-
Solltest dueine Fähigkeit/Erlaubnis übersetzen?dasist __ ('');Are you supposed to translate a capability/permission? that's __('');
- 3
- 2015-11-04
- Svetoslav Marinov
-
@SvetoslavMarinov Ich habe die Antwortbearbeitet,um die Übersetzung zuentfernen.@SvetoslavMarinov I edited the answer to remove the translation.
- 0
- 2019-02-24
- MikeSchinkel
-
@dashaluna Ich habe die Antwortbearbeitet,um sie zu klären.@dashaluna I edited the answer to clarify it.
- 0
- 2019-02-24
- MikeSchinkel
-
@ MikeSchinkel cool@MikeSchinkel cool
- 0
- 2019-02-24
- Svetoslav Marinov
-
- 2011-04-12
Haben Sie darübernachgedacht, Schwerkraftformen oder TDO Mini Forms ,um dieeigentliche Übermittlung von Inhalten zu handhaben?Sie verfügenjeweils über Funktionen,mit denen Sie den vom Benutzereingereichten Inhaltproblemlos handhaben können.
Have you considered looking at Gravity Forms or TDO Mini Forms to handle the actual content submission? They each have functionality that would get you well down the road towards sanely handling user-submitted content.
-
Vielen Dankfür Ihre Antwort,aber dasistnicht das,wonachich suche.Hauptsächlich,weil dies Plugins sind.Ichmöchte die Funktionalität selbst schreiben,damitich die volle Kontrolle über alles habe.Thanks for replying but these are not what I'm looking for. Mainly because these are plugins. I am looking to write the functionality myself so I have full control over everything.
- 0
- 2011-04-12
- Scott
-
- 2019-02-24
Eineeinfachere undeffizientere Möglichkeit,wie dies durch die Installationeines Pluginsmit dem Namen "Advance Access Manager"erreicht werden kann. Siemüssen die Funktionalitätnicht schreiben,haben aber dennochein angemessenes Maß an Kontrolle über die Benutzer,Rollen und deren Funktionen.Diemeisten Dinge,die Sie wollen,könnenmit diesem Pluginerreicht werden.
An easier and efficient way how this can be achieved by installing a plugin called "Advance Access Manager" , you will not have to write the functionality but still have decent level of control on the users , roles and what they can do . Most of the stuff you want can be achieved by this plugin .
OK,ich suchenach dembesten Weg,dies anzugreifen.
Ichbin sehr vertrautmit PHP undmachebenutzerdefinierte Beitragstypenmit benutzerdefinierten Metafeldernin WordPress.
Folgendesmöchteichtun:
Ichbenötige Hilfe zufolgenden Themen:
Idealerweise würdeiches vorziehen,wenn dies alles vom wp-admin auserledigt würde,aberich vermute,dassichmöglicherweiseein Frontend dafürerstellenmuss,um dieendliche Kontrolle zuerhalten,nach derich suche.
Jede Eingabe wird sehrgeschätzt.
Mitfreundlichen Grüßen