Autoriser le membre à avoir accès uniquement au type de publication personnalisé. Autorisation de modifier uniquement leurs propres messages
4 réponses
- votes
-
- 2011-04-12
Utilisez leplugin de Justin Tadlock " Membres ". Il vous donne lapossibilité de créer denouveaux rôleset demodifier des rôlesexistants,ainsi que d'ajouter desfonctionnalitéspersonnalisées. Tout ce que vous avez àfairepeut être réduit à quelques clics.
Je sais que vous avez dit dans votre commentaire sur la réponse de ZaMoose que vous «cherchez à écriremoi-même lafonctionnalitépour queje contrôletout». Celamanquetout l'intérêt du logiciel open source. Justin Tadlock a sorti sonpluginpour que vouspuissiez l'utiliser avecprécision afin que vous ayez un contrôletotal surtout.
Si vous voulez vraiment vraiment réinventer la roue,gaspillantpotentiellement des centaines d'heures de votretemps,je nepeuxpas vous arrêter,mais vouspourriez aumoins vous épargner leproblèmeet utiliser leplugin de Tadlockpour apprenez àfaire ce que vous voulez.
Unefois que vous avez unplugin quifait ce que vous voulez,vous devrez changer l'indicateur
'map_meta_cap'
entrue
et le'ability_type'
dans votrefonction d'enregistrement detype depublication afin qu'il dise autre chose que «publication»,«page» outout autretype «réservé». Ensuite,dupliqueztoutes lesfonctionnalités liées auxpublications (parexemple,edit_posts
,edit_others_posts
,publish_posts
,etc.),en utilisant votretype de capacité au lieu depublications. Assurez-vous d'attribuertoutes ces autorisations aux administrateurs (vousne pourrezpas voir letype depublicationtant que vousne l'aurezpasfait),puis créez votre rôleen imitant les capacités du rôle de «contributeur»pour votretype depublication.Parexemple,supposons que votretype de capacité était
foobars
,vous voudriez donner aux «propriétaires demagasin» lesedit_foobars
,delete_foobars
et < code> lire les capacités . De cettefaçon,ilspeuvent créer leurspropresbrouillons defoobarset supprimer cesbrouillons,mais commeilsne disposentpas desfonctionnalitéspublish_foobars
,ils doivent les soumettrepour approbation. Commeilsn'ontpas deedit_published_foobars
,toutes lesmodifications apportées à unfoobar approuvé doivent être approuvées.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,j'utilise leplugin Membersmaintenantpour avoir un aperçu dufonctionnement despermissions desmembres.J'ai défini ``map_meta_cap '=>true`et `` ability_type'=> 'shopowner'` surmontype depublicationpersonnalisé.J'ai créé unnouveau rôle appelé `ShopOwner`et lui ai donné les capacités de lecture,edit_shopowner,delete_shopowner.Définissez un utilisateur sur le rôle de ShopOwneret connecté avec cet utilisateur.Cet utilisateurne peutpas voir letype depublicationpersonnalisé.Ai-jemanqué quelque chose?OK 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
-
changez-lesen «edit_shopowners»et «delete_shopowners».`edit_shopowner`et` delete_shopowner` sont desméta capacités quine sontjamais vérifiées.Ils sont vérifiés lorsque quelqu'unessaie demodifier ou de supprimer un élément spécifique,et finitpar vérifier des élémentstels que "Cet utilisateurpeut-il supprimer cestypes d'éléments? Peut-il supprimer uniquement le sien ou d'autres? Peut-il supprimer les élémentspubliés?"etc.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
-
Jene pouvais rien comprendre à cela ...maisj'ai obtenu lafonctionnalité queje recherchaisen définissant des capacités dansmontype depublicationpersonnaliséet en créant cesfonctionnalités dans lepluginmembres.Je vous ai attribué les réponses car votremessagem'a été leplus utilepourtrouver une solution.MerciI 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
Letype depublication de registre a unparamètre appelé «capacités» donc vouspouvez avoirparexemple
'capability' => 'organize_shop',
http://codex.wordpress.org/Function_Reference/register_post_type
Pour créer unnouvel utilisateur/rôle/capacité,vouspouvez utiliser add_role,add_cap,commeexemple simplepour vous aider à démarrer:
// 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 ...je suis unpeu confus quelleest la différenceentre 2et 3 lignes?: S N'ajoute-t-ilpas lamême capacité au rôle «Propriétaire de laboutique»?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
-
Oui,ce sont lesmêmesmaisilsmontrent différentesfaçons de lefaire,lepremierinclut le rôle commepremierparamètre (propriétaire de laboutique),le secondjuste leplafond caril utilise $ role.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
-
Êtes-vous censétraduire une capacité/autorisation?c'est __('');Are you supposed to translate a capability/permission? that's __('');
- 3
- 2015-11-04
- Svetoslav Marinov
-
@SvetoslavMarinov J'aimodifié la réponsepour supprimer latraduction.@SvetoslavMarinov I edited the answer to remove the translation.
- 0
- 2019-02-24
- MikeSchinkel
-
@dashaluna J'ai édité la réponsepour la clarifier.@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
Avez-vousenvisagé de consulter Gravity Forms ou TDO Mini Forms pourgérer la soumission de contenu?Ils ont chacun desfonctionnalités qui vouspermettront demieuxgérer le contenu soumispar les utilisateurs.
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.
-
Merci d'avoir répondu,mais cen'estpas ce queje recherche.Principalementparce que ce sont desplugins.Je cherche à écriremoi-même lafonctionnalité afin d'avoir un contrôletotal surtout.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
Unmoyenplus simpleet efficace d'yparveniren installant unplugin appelé "Advance Access Manager",vousn'aurezpas à écrire lafonctionnalitémais aureztoujours unniveau de contrôle décent sur les utilisateurs,les rôleset ce qu'ilspeuventfaire.Laplupart des choses que vous voulezpeuvent être réaliséespar ceplugin.
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,je cherche lemeilleurmoyen d'attaquer ça.
Je suistrès à l'aise avec PHPet je crée destypes depublicationpersonnalisés avec desméta-champspersonnalisés dans WordPress.
Voici ce queje souhaitefaire:
J'aibesoin d'aide sur lespoints suivants:
Toute contributionestgrandement appréciée.
Cordialement