La page d’administration du profil utilisateur

Cette page est accessible depuis le menu Comptes du tableau bord WordPress. De base, elle est déjà pas mal chargée par WordPress. Le thème et toutes les extensions qui gèrent des aspects du profil utilisateur peuvent encore l’enrichir. Elle peut donc devenir très fournie voire fouillie au point d’en devenir inexploitable. C’est le cas notamment si on combine plusieurs extensions qui manipulent des données utilisateurs, comme MemberPress, WooCommerce, BuddyPress…

Pour cet article, j’ai installé uniquement le thème Avada et l’extension Yoast SEO, et voilà déjà ce que ça donne :

Sukellos WordPress CSS

Cette page est construite au coeur de WordPress dans le fichier wp-admin/user-edit.php. Il n’est pas possible de la surcharger. Par contre, en parcourant le code de cette page, il apparaît plusieurs astuces combinées qui permettent de la simplifier :

  • L’utilisation de filtres
  • La suppression d’actions
  • Des ajustements avec jQuery

L’utilisation de filtres

Peu de filtres peuvent être utilisés pour personnaliser cette page. Dans cet exemple, un des rares que j’ai trouvé permet de filtrer la liste des champs de contacts :

Sukellos WordPress CSS

Le filtre en question : apply_filters( 'user_contactmethods', string[] $methods, WP_User|null $user ).

Appliqué sur cette page, voilà ce que contient la variable $methods :

Copier

J’ai utilisé ce filtre pour vider l’ensemble des champs de contact, comme suit :

Copier

Je ne m’encombre pas à filtrer les éléments du tableau, et retourne tout simplement un tableau vide.

La suppression d’actions

Ajout des champs utilisateurs

Deux actions sont traditionnellement utilisées afin d’enrichir la page d’administration d’un profil utilisateur WordPress :

  • do_action( 'show_user_profile', WP_User $profile_user )
  • do_action( 'edit_user_profile', WP_User $profile_user )

show_user_profile est appelée lorsque l’utilisateur modifie son propre profil.

edit_user_profile est appélée lorsque l’utilisateur modifie un autre profil que le sien.

Dans la documentation WordPress, il est stipulé que les informations sont ajoutées après le paragraphe À propos de vous. En réalité, elles sont ajoutées précisément après le paragraphe Mots de passe d’application.

Dans cet exemple je souhaite supprimer la section ajoutée par Yoast SEO :

Sukellos WordPress CSS

Une recherche dans le code de l’extension Yoast SEO montre que ces deux actions sont utilisées dans la classe WPSEO_Admin_User_Profile. Précisément, elles sont appelées en passant une référence à l’instance de cette classe et à la méthode user_profile de la manière suivante :

add_action( 'show_user_profile', [ $this, 'user_profile' ] );

En théorie, il suffirait donc de supprimer ce hook en utilisant la fonction remove_action fournie par WordPress. Mais, en pratique, cela ne fonctionne pas. En effet, la référence $this ne peut pas être retrouvée simplement. J’ai déjà traité ce sujet en particulier dans un précédent article : Bien utiliser les hooks WordPress.

Je vais donc réutiliser la fonction offerte à la fin de cet article :

remove_filters_with_method_name( $hook_name = '', $method_name = '', $priority = 0 )

Copier

J’utilise le hook personal_options pour supprimer l’inscription de show_user_profile et de edit_user_profile parce qu’il est appelé lors de la construction de cette page, donc peu avant ces deux dernières.

D’ailleurs, voici une référence très intéressante, voire incontournable, à propos de l’ordre d’exécution des hooks dans WordPress : hookorder.com.

Traitement des champs utilisateurs

Les deux hooks précédents vont de pair avec les actions suivantes :

  • do_action( 'personal_options_update', int $user_id )
  • do_action( 'edit_user_profile_update', int $user_id )

personal_options_update est appelée lorsque l’utilisateur valide la modification son propre profil.

edit_user_profile est appelée lorsque l’utilisateur valide la modification d’un autre profil que le sien.

Ces deux actions permettent de traiter les valeurs des champs soumis par le formulaire de modification de profil.

Un oubli n’est pas forcément grave, mais parfois cela peut provoquer une erreur, comme c’est le cas justement pour Yoast SEO qui vérifie le Nonce lors de l’appel de process_user_option_update.

Les supprimer est donc également important, par exemple en appelant la même action avec une priorité plus basse afin qu’elle soit exécutée avant :

Copier

Choix des palettes de couleurs

Il existe une autre action appelée dans la page et qui peut être supprimée : celle qui génère le choix des couleurs.

Sukellos WordPress CSS

Cette action est admin_color_scheme_picker. Afin d’être bien certain de supprimer son exécution, je place le code dans l’appel du hook user_edit_form_tag.

Copier

Ajustements avec jQuery

Certaines informations ne peuvent pas être supprimées grâce aux deux méthodes précédentes. Dans cet exemple, je supprime les paragraphes Options personnelles, au début, et Mots de passe d’application, à la fin, grâce la méthode remove() de jQuery.

Sukellos WordPress CSS

Pour ce faire, j’utilise à nouveau le hook personal_options puisqu’il est appelé lors de l’exécution de la page d’administration du profil utilisateur.

Le code jQuery est ainsi ajouté à la page :

Copier

Le code intégral

Le code complet de l’exemple précédent qui regroupe toutes les approches :

Copier

Il est bien évident que la suppression du choix des couleurs n’a plus guère de sens si le paragraphe complet est supprimé à l’aide de jQuery. Je l’ai cependant laissé pour mémoire.

Le résultat en image :

Sukellos WordPress CSS

Quelques liens pour approfondir

Besoin d’une assistance technique par un expert WordPress ?
Optez pour un crédit temps de quelques heures

Laisser un commentaire