Gestion des utilisateurs WordPress: analyse approfondie des rôles et autorisations
Le système de gestion des utilisateurs de WordPress est basé sur des rôles et des autorisations. Un rôle est une entité qui contient un nom unique et un ensemble d'autorisations, chacune définit le niveau d'accès aux caractéristiques spécifiques à la plate-forme de ce rôle. Faisons des mécanismes de travail des rôles et des autorisations WordPress.
points clés
- La gestion des utilisateurs de WordPress est basée sur les rôles et les autorisations. Un rôle a un nom unique et un ensemble d'autorisations qui définissent le niveau d'accès à différentes fonctionnalités de la plate-forme par un rôle.
- WordPress fournit une API complète pour personnaliser les rôles et leurs autorisations. Des fonctions telles que
add_role()
,remove_role()
,add_cap()
etremove_cap()
peuvent être utilisées pour gérer les rôles et les autorisations. Cependant, vous devez faire attention à l'accès et aux performances de la base de données lors de l'utilisation de ces fonctions. - Il existe plusieurs façons d'éviter les problèmes de base de données lorsqu'ils traitent des rôles et des autorisations. Une façon consiste à déclencher le code uniquement lorsque le plugin est activé, vous pouvez utiliser la fonction
register_activation_hook()
. Une autre façon consiste à contourner la base de données WordPress en définissant la variable globale$wp_user_roles
.
Retour au mécanisme des scènes
Stockage des rôles
La liste de rôle et d'autorisation par défaut est disponible sur WordPress Codex.
La base de données stocke cette liste dans le tableau wp_options
.
Il utilise la clé sérialisée wp_user_roles
.
Les données désérialisées sont les suivantes:
<code>array( 'administrator' => array( 'name' => '管理员', 'capabilities' => array( 'switch_themes' => true, 'edit_themes' => true, 'activate_plugins' => true, 'edit_plugins' => true, 'edit_users' => true, // [...] ) ), 'contributor' => array( 'name' => '投稿者', 'capabilities' => array( 'delete_pages' => true, 'delete_others_pages' => true, 'delete_published_pages' => true, 'delete_posts' => true, // [...] ) ), // [...] );</code>
Ces métadonnées sont automatiquement définies lorsqu'un nouveau site WordPress est installé.
Lorsque WordPress démarre, la classe charge la liste de la base de données. WP_Roles
et plugins_loaded
crochets. init
WordPress utilise
stocké dans la table wp_usermeta
pour relier les utilisateurs à leurs rôles. meta_key
Après la désérialisation, les métadonnées sont les suivantes:
<code>array( 'administrator' => true )</code>Notez que WordPress utilise des tableaux, bien que les utilisateurs ne puissent avoir qu'un seul rôle à la fois, nous verrons pourquoi plus tard.
Aussi, rappelez-vous
est le préfixe du blog actuel. wp_
). $GLOBALS['wpdb']->get_blog_prefix()
- = & gt;
wp_capabilities
a:1:{s:13:"administrator";b:1;}
= & gt; - = & gt;
wp_10_capabilities
a:1:{s:11:"contributor";b:1;}
-
wp_15_capabilities
Cette règle s'applique également à l'entréea:1:{s:10:"subscriber";b:1;}
que nous avons vue dans le tableau . -
Enfin, nous pouvons voir les métadonnées
wp_user_level
ainsi que le rôle.Il est utilisé pour gérer les caractères dans des versions plus anciennes de WordPress et est désormais obsolète.
Utiliser les autorisations dans le code central
Nous avons appris comment les rôles sont chargés et liés aux utilisateurs;
Certaines autorisations par défaut sont codées en dur dans le code de base WordPress.
Par exemple, lorsque l'écran du plugin est chargé, il vérifiera si l'utilisateur actuel peut gérer le plugin en exécutant le code suivant:
<code>array( 'administrator' => array( 'name' => '管理员', 'capabilities' => array( 'switch_themes' => true, 'edit_themes' => true, 'activate_plugins' => true, 'edit_plugins' => true, 'edit_users' => true, // [...] ) ), 'contributor' => array( 'name' => '投稿者', 'capabilities' => array( 'delete_pages' => true, 'delete_others_pages' => true, 'delete_published_pages' => true, 'delete_posts' => true, // [...] ) ), // [...] );</code>
Les rôlesne sont jamais codés en dur;
Utilisation des rôles et des autorisations: API WordPress
API Access
WordPress fournit les fonctions globales suivantes pour nous aider à gérer les rôles.
current_user_can()
Vérifiez si l'utilisateur actuel a les autorisations requises.
<code>array( 'administrator' => true )</code>
WP_User::has_cap
Vérifiez si un utilisateur spécifique a la permission.
<code>if (!current_user_can('activate_plugins')) { wp_die(__('您没有足够的权限来管理此站点的插件。')); }</code>
Nous pouvons remarquer que
current_user_can
utilise cette fonction.get_editable_roles()
revient à des rôles modifiables.
<code>add_action('init', function() { if (current_user_can('install_plugins')) { echo '您可以安装插件'; } else { echo '您不能安装插件'; } });</code>
Cette liste peut être écrasée par les filtres
editable_roles
, nous ne devons donc pas compter sur cette fonction pour obtenir la liste complète des rôles sur le site Web.Veuillez noter l'utilisation du crochet
admin_init
, car la fonction n'a pas encore été chargée dans le crochetinit
.get_role()
Obtenez
WP_Role
objet basé sur sa limace.<code>add_action('init', function() { $user = get_user_by('slug', 'admin'); if ($user->has_cap('install_plugins')) { echo '管理员可以安装插件'; } else { echo '管理员不能安装插件'; } });</code>
WP_Role::has_cap()
Vérifiez si le rôle a les autorisations requises.
<code>add_action('admin_init', function() { $roles = get_editable_roles(); var_dump($roles); });</code>
API personnalisée
WordPress fournit également une API complète pour personnaliser les rôles et leurs autorisations.
add_role()
Enregistrez un nouveau rôle dans la base de données.
<code>add_action('init', function() { $role = get_role('administrator'); var_dump($role); }); // 这将打印: // WP_Role 对象 // ( // [name] => administrator // [capabilities] => Array // ( // [switch_themes] => 1 // [edit_themes] => 1 // [activate_plugins] => 1 // [edit_plugins] => 1 // [...]</code>
remove_role()
Si présent, supprimez le rôle requis de la base de données.
<code>add_action('init', function() { $role = get_role('administrator'); var_dump($role->has_cap('install_plugins')); // 打印 TRUE });</code>
WP_Role::add_cap()
Ajouter des autorisations au rôle.
<code>add_action('init', function() { add_role('plugins_manager', '插件管理员', array( 'install_plugins', 'activate_plugins', 'edit_plugins' )); });</code>
Cela peut être des autorisations de base (
install_plugins
,edit_posts
…) ou n'importe quelle chaîne personnalisée (my_awesome_plugin_cap
).Il nous permet d'enregistrer autant d'autorisations personnalisées que possible pour notre plugin.
WP_Role::remove_cap()
s'il existe, supprimez les autorisations du rôle.
<code>add_action('init', function() { remove_role('plugins_manager'); });</code>
WP_User::add_role()
Ajouter des rôles à un utilisateur donné.
<code>add_action('init', function() { $role = get_role('contributor'); $role->add_cap('install_plugins'); });</code>
Cette fonction vous permet de définir théoriquement plusieurs rôles pour le même utilisateur.
Étant donné que le backend WordPress affiche et gère un rôle par utilisateur, nous ne devons pas ajouter plusieurs rôles pour les utilisateurs et devons toujours utiliser
WP_User::remove_role()
avant d'ajouter un nouveau rôle.WP_User::remove_role()
supprimer les rôles de l'utilisateur donné.
<code>add_action('init', function() { $role = get_role('contributor'); $role->remove_cap('install_plugins'); });</code>
WP_User::add_cap()
Ajouter des autorisations à un utilisateur donné.
<code>array( 'administrator' => array( 'name' => '管理员', 'capabilities' => array( 'switch_themes' => true, 'edit_themes' => true, 'activate_plugins' => true, 'edit_plugins' => true, 'edit_users' => true, // [...] ) ), 'contributor' => array( 'name' => '投稿者', 'capabilities' => array( 'delete_pages' => true, 'delete_others_pages' => true, 'delete_published_pages' => true, 'delete_posts' => true, // [...] ) ), // [...] );</code>
Ceci est très utile si nous voulons ajouter une seule autorisation à l'utilisateur sans avoir à créer un rôle complet.
WP_User::remove_cap()
Supprimer les autorisations de l'utilisateur donné.
<code>array( 'administrator' => true )</code>
Certains problèmes avec API WordPress
En dehors d'une question, les fonctions que nous voyons sont bonnes: l'accès et les performances de la base de données.
sur quoi nous nous concentrons principalement lorsque nous traitons des rôles et des autorisations, c'est quand notre code devrait-il être déclenché?
Pour expliquer cela, jetons un coup d'œil au code de base WordPress.<code>if (!current_user_can('activate_plugins')) { wp_die(__('您没有足够的权限来管理此站点的插件。')); }</code>
Voici les premières lignes de la fonction(en fait redirigé vers
add_role
):WP_Roles::add_role
<code>add_action('init', function() { if (current_user_can('install_plugins')) { echo '您可以安装插件'; } else { echo '您不能安装插件'; } });</code>
Si nous ajoutons un nouveau rôle, la fonctions'exécute une fois et ne fait plus rien.
Ensuite, supposons que nous voulons ajouter des autorisations à notre rôle nouvellement créé:add_role
<code>add_action('init', function() { $user = get_user_by('slug', 'admin'); if ($user->has_cap('install_plugins')) { echo '管理员可以安装插件'; } else { echo '管理员不能安装插件'; } });</code>
La fonctiondans WordPress 4.2.2 est la suivante:
WP_Role::add_cap()
<code>add_action('admin_init', function() { $roles = get_editable_roles(); var_dump($roles); });</code>
Il met à jour l'objet, mais nous pouvons également voir que la base de données sera mise à jour chaque fois que notre code s'exécute, même si nos nouvelles autorisations sont déjà enregistrées!
Solution$this->roles
Cela signifie que si nous nous soucions des performances, tout le code que nous écrivons pour les rôles personnalisés et les autorisations ne devrait pas s'exécuter lorsque chaque page se charge.pour déclencher du code lorsque le plugin est activé dans le backend.
Créons un exemple de plugin:
register_activation_hook()
Ce code ne s'exécutera qu'une seule fois lorsque le plugin est activé sur le site Web.
<code>add_action('init', function() { $role = get_role('administrator'); var_dump($role); }); // 这将打印: // WP_Role 对象 // ( // [name] => administrator // [capabilities] => Array // ( // [switch_themes] => 1 // [edit_themes] => 1 // [activate_plugins] => 1 // [edit_plugins] => 1 // [...]</code>
Maintenant, nous devons nous rappeler que cette solution dépend de l'activation et de la désactivation du plugin.charge le rôle de la base de données lorsque WordPress démarre:
WP_Roles
WordPress vérifie les variables globales<code>add_action('init', function() { $role = get_role('administrator'); var_dump($role->has_cap('install_plugins')); // 打印 TRUE });</code>
Si défini, WordPress utilisera son contenu et bloquera l'utilisation de la base de données en définissant la variable
$wp_user_roles
sur false.Essayons-le, en gardant seulement un nouveau rôle d'administrateur restreint:
$this->use_db
Lors du chargement du backend, nous pouvons voir qu'il conserve la définition de notre rôle personnalisé:
Cette solution résout le problème de la base de données, mais peut introduire d'autres problèmes:
- Les plugins utilisant des API natifs peuvent ne pas fonctionner correctement.
- Nous devons définir manuellement la définition de chaque rôle, même pour le rôle que nous ne voulons pas changer.
Cependant, cela peut être une solution viable lors de la création d'une application WordPress personnalisée qui nécessite une liste personnalisée de rôles statiques:
- Les définitions de rôle peuvent être versionnées avec le code.
- Pusing New Code dans l'environnement mettra automatiquement à jour la définition.
- Plus besoin de considérer les problèmes de base de données.
Conclusion
Dans cet article, je présente un aperçu des rôles et des autorisations d'utilisation dans WordPress.
Bien que son API complète nous permette de faire presque tout ce que nous voulons, les relations avec les bases de données sont toujours le principal problème.
Nous devons garder cela à l'esprit lors du développement de nos plugins et de nos thèmes.
Que pensez-vous de la façon dont WordPress gère les rôles? Dans l'attente de vos commentaires!
Les questions fréquemment posées sur la maîtrise des rôles et autorisations WordPress
Quel est le rôle d'utilisateur par défaut dans WordPress? Quelles sont leurs autorisations?
WordPress a six rôles utilisateur par défaut: super administrateur, administrateur, éditeur, auteur, contributeur et abonné. Chaque rôle a un ensemble spécifique d'autorisations. Par exemple, un super administrateur peut accéder à toutes les fonctionnalités administratives de plusieurs sites. Les administrateurs peuvent effectuer toutes les tâches administratives sur un seul site. Les éditeurs peuvent publier et gérer des publications, y compris ceux des autres utilisateurs. Les auteurs peuvent publier et gérer leurs propres messages. Les contributeurs peuvent écrire et gérer leurs propres messages, mais ils ne peuvent pas être affichés. Les abonnés ne peuvent gérer que leur profil.
Comment ajouter de nouveaux rôles utilisateur dans WordPress?
Pour ajouter un nouveau rôle utilisateur dans WordPress, vous pouvez utiliser la fonction
add_role()
. Cette fonction accepte trois paramètres: rôle, nom d'affichage et tableau d'autorisation. Par exemple, pour ajouter un nouveau rôle appelé "Custom_role" et avoir la permission de lire et de modifier les publications, vous pouvez utiliser le code suivant:add_role( 'custom_role', __('自定义角色'), array( 'read' => true, // 可以读取帖子 'edit_posts' => true, // 可以编辑帖子 ) );
Comment supprimer les rôles utilisateur dans WordPress?
Pour supprimer un rôle utilisateur dans WordPress, vous pouvez utiliser la fonction
remove_role()
. Cette fonction accepte un paramètre: rôle. Par exemple, pour supprimer le "Custom_role" précédemment ajouté, vous pouvez utiliser le code suivant:remove_role('custom_role');
Comment ajouter des autorisations aux rôles utilisateur dans WordPress?
Pour ajouter des autorisations aux rôles utilisateur dans WordPress, vous pouvez utiliser la fonction
add_cap()
. Cette fonction accepte deux paramètres: l'autorisation et une valeur booléenne indiquant si le rôle a l'autorisation. Par exemple, pour ajouter la permission de "publih_posts" à "Custom_role", vous pouvez utiliser le code suivant:$role = get_role('custom_role'); $role->add_cap('publish_posts', true);
Comment supprimer les autorisations des rôles utilisateur dans WordPress?
Pour supprimer les autorisations des rôles utilisateur dans WordPress, vous pouvez utiliser la fonction
remove_cap()
. Cette fonction accepte un paramètre: l'autorisation. Par exemple, pour supprimer l'autorisation "Publish_Posts" de "Custom_role", vous pouvez utiliser le code suivant:$role = get_role('custom_role'); $role->remove_cap('publish_posts');
Comment modifier le rôle d'utilisateur par défaut dans WordPress?
Pour modifier le rôle d'utilisateur par défaut dans WordPress, accédez à Paramètres & gt; Dans le cadre des nouveaux rôles par défaut de l'utilisateur, sélectionnez le rôle que vous souhaitez définir par défaut dans le menu déroulant.
Comment attribuer plusieurs rôles aux utilisateurs dans WordPress?
WordPress ne prend pas en charge l'attribution de plusieurs rôles aux utilisateurs par défaut. Cependant, vous pouvez le faire en utilisant des plugins comme plusieurs rôles. Après avoir installé et activé le plugin, vous pouvez attribuer plusieurs rôles à l'utilisateur à partir de la page de profil de l'utilisateur.
Comment limiter l'accès au contenu en fonction des rôles utilisateur dans WordPress?
Pour restreindre l'accès au contenu en fonction des rôles utilisateur dans WordPress, vous pouvez utiliser des plugins comme les membres. Ce plugin vous permet de contrôler les rôles qui peuvent accéder au contenu spécifique sur votre site Web.
Comment créer des autorisations personnalisées dans WordPress?
Pour créer des autorisations personnalisées dans WordPress, vous pouvez utiliser la fonction
add_cap()
. Cette fonction accepte deux paramètres: l'autorisation et une valeur booléenne indiquant si le rôle a l'autorisation. Par exemple, pour ajouter une autorisation personnalisée nommée "Manage_custom" à "Custom_role", vous pouvez utiliser le code suivant:$role = get_role('custom_role'); $role->add_cap('manage_custom', true);
Comment vérifier si un utilisateur dans WordPress a des autorisations spécifiques?
Pour vérifier si un utilisateur dans WordPress a des autorisations spécifiques, vous pouvez utiliser la fonction
current_user_can()
. Cette fonction accepte un paramètre: l'autorisation. Par exemple, pour vérifier si l'utilisateur actuel a une autorisation "manage_custom", vous pouvez utiliser le code suivant:if (current_user_can('manage_custom')) { // 当前用户具有“manage_custom”权限 }
Toutes les images conservent leur format et leur emplacement d'origine.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

WordpressisadvantageousovercodingawebsitefromscratchDueto: 1) facilitésofuseandfasterdevelopment, 2) flexibilité et échec, 3) Communie solide.

WordPressisacmsDuetOtsEaseOfuse, personnalisation, usermanagement, référencement, et CommunitySupport.1)

Activez les commentaires sur votre site Web WordPress pour fournir aux visiteurs une plate-forme pour participer aux discussions et partager les commentaires. Pour ce faire, suivez ces étapes: Activez les commentaires: Dans le tableau de bord, accédez à Paramètres & GT; Discussions et sélectionnez la case Autoriser les commentaires. Créez un formulaire de commentaire: Dans l'éditeur, cliquez sur Ajouter un bloc et recherchez le bloc de commentaires pour l'ajouter au contenu. Formulaire de commentaire personnalisé: Personnalisez les blocs de commentaires en définissant des titres, des étiquettes, des espaces réservés et du texte des bouton. Enregistrer les modifications: cliquez sur Mettre à jour pour enregistrer la zone de commentaire et l'ajouter à la page ou à l'article.

Comment copier un subsite WordPress? Étapes: Créez un sous-site dans le site principal. Clonage du sous-site dans le site principal. Importez le clone dans l'emplacement cible. Mettez à jour le nom de domaine (facultatif). Plugins et thèmes séparés.

Les étapes pour créer un en-tête personnalisé dans WordPress sont les suivantes: modifier le fichier de thème "header.php". Ajoutez le nom et la description de votre site Web. Créez un menu de navigation. Ajoutez une barre de recherche. Enregistrez les modifications et affichez votre en-tête personnalisé.

Activer les commentaires dans le site Web de WordPress: 1. Connectez-vous au panneau d'administration, accédez à "Paramètres" - "Discussions" et vérifiez "Autoriser les commentaires"; 2. Sélectionnez un emplacement pour afficher les commentaires; 3. Personnaliser les commentaires; 4. Gérer les commentaires, approuver, rejeter ou supprimer; 5. Utiliser & lt ;? php commentaires_template (); ? & gt; Tags pour afficher les commentaires; 6. Activer les commentaires imbriqués; 7. Ajuster la forme du commentaire; 8. Utilisez des plugins et des codes de vérification pour empêcher les commentaires du spam; 9. Encouragez les utilisateurs à utiliser Gravatar Avatar; 10. Créer des commentaires pour se référer à

Vous pouvez installer le plug-in FTP via WordPress, configurer la connexion FTP, puis télécharger le code source à l'aide du gestionnaire de fichiers. Les étapes incluent: l'installation du plug-in FTP, la configuration de la connexion, la navigation sur l'emplacement de téléchargement, le téléchargement de fichiers et la vérification que le téléchargement est réussi.

Comment copier WordPress Code? Copier à partir de l'interface d'administration: connectez-vous au site Web WordPress, accédez à la destination, sélectionnez le code et appuyez sur Ctrl C (Windows) / Commande C (Mac) pour copier le code. Copiez à partir d'un fichier: connectez-vous au serveur à l'aide de SSH ou FTP, accédez au fichier thème ou plug-in, sélectionnez le code et appuyez sur Ctrl C (Windows) / Commande C (Mac) pour copier le code.


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Navigateur d'examen sécurisé
Safe Exam Browser est un environnement de navigation sécurisé permettant de passer des examens en ligne en toute sécurité. Ce logiciel transforme n'importe quel ordinateur en poste de travail sécurisé. Il contrôle l'accès à n'importe quel utilitaire et empêche les étudiants d'utiliser des ressources non autorisées.

PhpStorm version Mac
Le dernier (2018.2.1) outil de développement intégré PHP professionnel

MinGW - GNU minimaliste pour Windows
Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

MantisBT
Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

VSCode Windows 64 bits Télécharger
Un éditeur IDE gratuit et puissant lancé par Microsoft
