Modifier les paramètres de l'utilisateur en fonction du contenu de $_POST.

Description

Utilisé sur user-edit.php et profile.php pour gérer et traiter les options des utilisateurs, les mots de passe, etc.

Paramètres

$user_id

(int)(Facultatif) ID de l'utilisateur.

Retour

(int|WP_Error) ID utilisateur de l'utilisateur mis à jour.

Source

Fichier : wp-admin/includes/user.php

functionedit_user($user_id=0){$wp_roles=wp_roles();$user=newstdClass;$user_id=(int)$user_id;if($user_id){$update=true;$user->ID=$user_id;$userdata=get_userdata($user_id);$user->user_login=wp_slash($userdata->user_login);}else{$update=false;}if(!$update&&isset($_POST['user_login'])){$user->user_login=sanitize_user(wp_unslash($_POST['user_login']),true);}$pass1='';$pass2='';if(isset($_POST['pass1'])){$pass1=trim($_POST['pass1']);}if(isset($_POST['pass2'])){$pass2=trim($_POST['pass2']);}if(isset($_POST['role'])&&current_user_can('promote_users')&&(!$user_id||current_user_can('promote_user',$user_id))){$new_role=sanitize_text_field($_POST['role']);// If the new role isn't editable by the logged-in user die with error.$editable_roles=get_editable_roles();if(!empty($new_role)&&empty($editable_roles[$new_role])){wp_die(__('Sorry, you are not allowed to give users that role.'),403);}$potential_role=isset($wp_roles->role_objects[$new_role])?$wp_roles->role_objects[$new_role]:false;/*
		 * Don't let anyone with 'promote_users' edit their own role to something without it.
		 * Multisite super admins can freely edit their roles, they possess all caps.
		 */if((is_multisite()&&current_user_can('manage_network_users'))||get_current_user_id()!==$user_id||($potential_role&&$potential_role->has_cap('promote_users'))){$user->role=$new_role;}}if(isset($_POST['email'])){$user->user_email=sanitize_text_field(wp_unslash($_POST['email']));}if(isset($_POST['url'])){if(empty($_POST['url'])||'http://'===$_POST['url']){$user->user_url='';}else{$user->user_url=esc_url_raw($_POST['url']);$protocols=implode('|',array_map('preg_quote',wp_allowed_protocols()));$user->user_url=preg_match('/^('$protocols'):/is',$user->user_url)?$user->user_url:'http://'$user->user_url;}}if(isset($_POST['first_name'])){$user->first_name=sanitize_text_field($_POST['first_name']);}if(isset($_POST['last_name'])){$user->last_name=sanitize_text_field($_POST['last_name']);}if(isset($_POST['nickname'])){$user->nickname=sanitize_text_field($_POST['nickname']);}if(isset($_POST['display_name'])){$user->display_name=sanitize_text_field($_POST['display_name']);}if(isset($_POST['description'])){$user->description=trim($_POST['description']);}foreach(wp_get_user_contact_methods($user)as$method=>$name){if(isset($_POST[$method])){$user->$method=sanitize_text_field($_POST[$method]);}}if(isset($_POST['locale'])){$locale=sanitize_text_field($_POST['locale']);if('site-default'===$locale){$locale='';}elseif(''===$locale){$locale='en_US';}elseif(!in_array($locale,get_available_languages(),true)){$locale='';}$user->locale=$locale;}if($update){$user->rich_editing=isset($_POST['rich_editing'])&&'false'===$_POST['rich_editing']?'false':'true';$user->syntax_highlighting=isset($_POST['syntax_highlighting'])&&'false'===$_POST['syntax_highlighting']?'false':'true';$user->admin_color=isset($_POST['admin_color'])?sanitize_text_field($_POST['admin_color']):'fresh';$user->show_admin_bar_front=isset($_POST['admin_bar_front'])?'true':'false';}$user->comment_shortcuts=isset($_POST['comment_shortcuts'])&&'true'===$_POST['comment_shortcuts']?'true':'';$user->use_ssl=0;if(!empty($_POST['use_ssl'])){$user->use_ssl=1;}$errors=newWP_Error();/* checking that username has been typed */if(''===$user->user_login){$errors->add('user_login',__('Error: Please enter a username.'));}/* checking that nickname has been typed */if($update&&empty($user->nickname)){$errors->add('nickname',__('Error: Please enter a nickname.'));}/**
	 * Fires before the password and confirm password fields are checked for congruity.
	 *
	 * @since 1.5.1
	 *
	 * @param string $user_login The username.
	 * @param string $pass1     The password (passed by reference).
	 * @param string $pass2     The confirmed password (passed by reference).
	 */do_action_ref_array('check_passwords',array($user->user_login,&$pass1,&$pass2));// Check for blank password when adding a user.if(!$update&&empty($pass1)){$errors->add('pass',__('Error: Please enter a password.'),array('form-field'=>'pass1'));}// Check for "" in password.if(false!==strpos(wp_unslash($pass1),'\')){$errors->add('pass',__('Error: Passwords may not contain the character "\".'),array('form-field'=>'pass1'));}// Checking the password has been typed twice the same.if(($update||!empty($pass1))&&$pass1!=$pass2){$errors->add('pass',__('Error: Passwords don’t match. Please enter the same password in both password fields.'),array('form-field'=>'pass1'));}if(!empty($pass1)){$user->user_pass=$pass1;}if(!$update&&isset($_POST['user_login'])&&!validate_username($_POST['user_login'])){$errors->add('user_login',__('Error: This username is invalid because it uses illegal characters. Please enter a valid username.'));}if(!$update&&username_exists($user->user_login)){$errors->add('user_login',__('Error: This username is already registered. Please choose another one.'));}/** This filter is documented in wp-includes/user.php */$illegal_logins=(array)apply_filters('illegal_user_logins',array());if(in_array(strtolower($user->user_login),array_map('strtolower',$illegal_logins),true)){$errors->add('invalid_username',__('Error: Sorry, that username is not allowed.'));}/* checking email address */if(empty($user->user_email)){$errors->add('empty_email',__('Error: Please enter an email address.'),array('form-field'=>'email'));}elseif(!is_email($user->user_email)){$errors->add('invalid_email',__('Error: The email address isn’t correct.'),array('form-field'=>'email'));}else{$owner_id=email_exists($user->user_email);if($owner_id&&(!$update||($owner_id!=$user->ID))){$errors->add('email_exists',__('Error: This email is already registered. Please choose another one.'),array('form-field'=>'email'));}}/**
	 * Fires before user profile update errors are returned.
	 *
	 * @since 2.8.0
	 *
	 * @param WP_Error $errors WP_Error object (passed by reference).
	 * @param bool     $update Whether this is a user update.
	 * @param stdClass $user   User object (passed by reference).
	 */do_action_ref_array('user_profile_update_errors',array(&$errors,$update,&$user));if($errors->has_errors()){return$errors;}if($update){$user_id=wp_update_user($user);}else{$user_id=wp_insert_user($user);$notify=isset($_POST['send_user_notification'])?'both':'admin';/**
		 * Fires after a new user has been created.
		 *
		 * @since 4.4.0
		 *
		 * @param int    $user_id ID of the newly created user.
		 * @param string $notify  Type of notification that should happen. See wp_send_new_user_notifications()
		 *                        for more information on possible values.
		 */do_action('edit_user_created_user',$user_id,$notify);}return$user_id;}

Related

Utilise

Utilisations Description
wp-includes/user.php : illegal_user_logins

Filtre la liste des noms d'utilisateurs non autorisés.

wp-admin/includes/user.php : edit_user_created_user

Se déclenche après la création d'un nouvel utilisateur.

wp-includes/capabilities.php : wp_roles()

Récupère l'instance globale WP_Roles et l'instancie si nécessaire.

wp-admin/includes/user.php : get_editable_roles()

Récupère une liste filtrée des rôles d'utilisateur que l'utilisateur actuel est autorisé à modifier.

wp-admin/includes/user.php : check_passwords

Se déclenche avant la vérification de la congruence des champs de mot de passe et de confirmation de mot de passe.

wp-admin/includes/user.php : user_profile_update_errors

Se déclenche avant que les erreurs de mise à jour du profil utilisateur ne soient renvoyées.

wp-includes/capabilities.php : current_user_can()

Renvoie si l'utilisateur actuel a la capacité spécifiée.

wp-includes/l10n.php : get_available_languages()

Obtenir toutes les langues disponibles en fonction de la présence de fichiers *.mo dans un répertoire donné.

wp-includes/l10n.php : __()

Récupérer la traduction de $text.

wp-includes/formatting.php : wp_slash()

Ajoute des barres obliques à une chaîne de caractères ou ajoute récursivement des barres obliques aux chaînes de caractères dans un tableau.

wp-includes/formatting.php : wp_unslash()

Supprime les barres obliques d'une chaîne de caractères ou supprime récursivement les barres obliques des chaînes de caractères dans un tableau.

wp-includes/formatting.php : sanitize_text_field()

Sanitise une chaîne de caractères à partir de la saisie de l'utilisateur ou de la base de données.

wp-includes/formatting.php : esc_url_raw()

Exécute esc_url() pour l'utilisation de la base de données.

wp-includes/formatting.php : is_email()

Vérifie qu'un courriel est valide.

wp-includes/formatting.php : sanitize_user()

Sanitizes un nom d'utilisateur, en supprimant les caractères non sûrs.

wp-includes/pluggable.php : get_userdata()

Récupérer les infos de l'utilisateur par son identifiant.

wp-includes/load.php : is_multisite()

Si Multisite est activé.

wp-includes/functions.php : wp_allowed_protocols()

Récupère une liste de protocoles à autoriser dans les attributs HTML.

wp-includes/functions.php : wp_die()

Tue l'exécution de WordPress et affiche une page HTML avec un message d'erreur.

wp-includes/plugin.php : do_action_ref_array()

Appelle les fonctions de rappel qui ont été ajoutées à un crochet d'action, en spécifiant les arguments dans un tableau.

wp-includes/plugin.php : apply_filters()

Appelle les fonctions de rappel qui ont été ajoutées à un crochet de filtre.

wp-includes/plugin.php : do_action()

Exécute les fonctions accrochées à un crochet d'action spécifique.

wp-includes/user.php : wp_get_user_contact_methods()

Configurer les méthodes de contact de l'utilisateur.

wp-includes/user.php : wp_update_user()

Mise à jour d'un utilisateur dans la base de données.

wp-includes/user.php : validate_username()

Vérifie si un nom d'utilisateur est valide.

wp-includes/user.php : username_exists()

Détermine si le nom d'utilisateur donné existe.

wp-includes/user.php : email_existe()

Détermine si l'email donné existe.

wp-includes/user.php : wp_insert_user()

Insérer un utilisateur dans la base de données.

wp-includes/user.php : get_current_user_id()

Récupère l'identifiant de l'utilisateur actuel.

wp-includes/class-wp-error.php : WP_Error::__construct()

Initialise l'erreur.

Utilisé par

Utilisé par Description
wp-admin/includes/user.php : add_user()

Crée un nouvel utilisateur à partir du formulaire "Utilisateurs" en utilisant les informations $_POST.

wp-admin/includes/ajax-actions.php : wp_ajax_add_user()

Gestionnaire Ajax pour l'ajout d'un utilisateur.

Changelog

Version Description
2.0.0 Introduit.