web-dev-qa-db-fra.com

Autoriser les membres à accéder uniquement au type de publication personnalisé. Autorisation de modifier uniquement leurs propres messages

OK je cherche le meilleur moyen d'attaquer ça.

Je suis très à l'aise avec PHP et la création de types d'articles personnalisés avec des champs méta personnalisés dans WordPress.

Voici ce que je cherche à faire:

  1. L'utilisateur s'inscrit et est défini par défaut sur l'abonné.
  2. L'utilisateur demande à l'administrateur d'avoir l'autorisation de saisir un type de publication.
  3. L'administrateur affecte à l'utilisateur un autre nom d'autorisation, tel que "Propriétaire de la boutique".
  4. L'utilisateur peut maintenant voir le type de publication personnalisé et peut effectuer une entrée dans ce type de publication.
  5. L'utilisateur peut uniquement voir et éditer son propre message.

J'ai besoin d'aide sur les points suivants:

  1. Comment créer un nouveau "rôle" appelé "propriétaire de la boutique",
  2. Comment autoriser correctement ce rôle à ne voir que et avoir accès au type de publication personnalisé.
  3. Autoriser uniquement les utilisateurs à voir et à modifier leurs propres publications dans ce type de publication personnalisée.

Idéalement, je préférerais que tout cela ait été fait à partir de wp-admin, mais je suppose que je pourrais avoir besoin de construire un front-end pour obtenir le contrôle fini que je recherche.

Toute entrée est grandement appréciée.

Sincères amitiés

29
Brady

Utilisez le plugin " Membres " de Justin Tadlock. Il vous donne la possibilité de créer de nouveaux rôles et de modifier des rôles existants, ainsi que d'ajouter des fonctionnalités personnalisées. Tout ce que vous devez faire peut être réduit en quelques clics.

Je sais que dans votre commentaire sur la réponse de ZaMoose, vous avez dit que vous "écrivez moi-même la fonctionnalité pour que je puisse tout contrôler". Cela manque l’intérêt des logiciels open source. Justin Tadlock a publié son plugin afin que vous puissiez l'utiliser avec précision afin que vous puissiez avoir un contrôle complet sur tout.

Si vous voulez vraiment vraiment vouloir réinventer la roue, en gaspillant potentiellement des centaines d'heures de votre temps, je ne peux pas vous arrêter, mais vous pouvez au moins vous épargner le problème et utiliser le plugin de Tadlock pour apprendre à le faire. ce que tu veux.

Une fois que vous avez un plugin qui fait ce que vous voulez, vous devez changer l’indicateur 'map_meta_cap' en true et l’indicateur 'capability_type' dans votre fonction d’enregistrement de type de publication afin qu’il indique autre chose que 'post', 'page' ou toute autre. type 'réservé'. Ensuite, dupliquez toutes les fonctionnalités liées aux publications (par exemple, edit_posts, edit_others_posts, publish_posts, etc.), en utilisant votre type de fonctionnalité au lieu de publications. Assurez-vous d'attribuer toutes ces autorisations aux administrateurs (vous ne pourrez pas voir le type de publication jusqu'à ce que vous le fassiez), puis créez votre rôle en imitant les capacités du rôle de "contributeur" pour votre type de publication.

Par exemple, supposons que votre type de capacité était foobars, vous voudriez donner aux 'propriétaires de boutique' les capacités edit_foobars, delete_foobars et read. De cette façon, ils peuvent créer leurs propres brouillons et les supprimer, mais comme ils ne disposent pas des capacités publish_foobars, ils doivent les soumettre pour approbation. Parce qu'ils n'ont pas edit_published_foobars, toutes les modifications apportées à un foobar approuvé doivent être approuvées.

21
John P Bloch

Le type de poste de registre a un paramètre appelé "capacités" afin que vous puissiez avoir par exemple

'capability' => 'organize_shop',

http://codex.wordpress.org/Function_Reference/register_post_type

Pour créer un nouvel utilisateur/rôle/fonctionnalité, vous pouvez utiliser add_role, add_cap, par exemple, pour 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' );

19
Wyck

Avez-vous envisagé de consulter Formulaires Gravity ou TDO Mini Forms pour gérer la soumission de contenu proprement dite? Chacune d'entre elles possède des fonctionnalités qui vous permettront de gérer correctement le contenu soumis par les utilisateurs.

1
ZaMoose

Pour y parvenir plus facilement et plus efficacement en installant un plug-in appelé "Advance Access Manager", vous n’aurez pas à écrire la fonctionnalité, mais vous aurez toujours un niveau de contrôle décent sur les utilisateurs, les rôles et ce qu’ils peuvent faire. La plupart des choses que vous voulez peuvent être réalisées avec ce plugin.

0
sillyghost