Lorsqu'un utilisateur s'est identifié, une barre de menu apparait en haut de son écran, comme le montre la capture d'écran ci-dessous :
Comme on le voit, il y a un menu à 3 options :
- TEST TEST (nom de l'utilisateur) donne accès à sa page de profil
- Modifier le profil donne aussi accès à sa page de profil
- Se déconnecter
L'accès à le page de profil de l'utilisateur est redondante. Mais ce n'est pas le seul inconvénient : la page de profil va permettre d'accéder au Tableau de bord.
Ces accès sont à la fois inutiles et déroutants. Il serait préférable de permettre la modification du profil en utilisant une page personnalisée, par exemple la page "Mettre à jour son profil" ayant pour adresse https://monsite.fr/profil
.
La modification proposée va le permettre et on obtiendra la barre de menu ci-dessous :
Ceci est possible en personnalisant le thème utilisé.
On va, dans le thème customisé, ouvrir le fichier functions.php
et on ajoute les lignes suivantes :
add_action( 'admin_bar_menu', 'modify_admin_bar' );
function modify_admin_bar( $wp_admin_bar ){ $user_info = $wp_admin_bar->get_node('user-info'); // supprime l'option TEST TEST inutile if ($user_info) { $wp_admin_bar->remove_node('user-info'); } // récupère l'appel de la page Modifier le profil $edit_profile = $wp_admin_bar->get_node('edit-profile'); if ($edit_profile) { // remplace cet appel par la nouvelle page $wp_admin_bar->remove_node('edit-profile'); $wp_admin_bar->add_menu([ 'id' => $edit_profile->id, 'title' => $edit_profile->title, 'parent' => $edit_profile->parent, 'href' => 'https://monsite.fr/profil', 'group' => $edit_profile->group, 'meta' => $edit_profile->meta]); } // récupère l'élément "Bonjour TEST TEST" $my_account = $wp_admin_bar->get_node('my-account'); if ($my_account) { // remplace cet élément par le même sans lien $wp_admin_bar->remove_node('my-account'); $wp_admin_bar->add_menu([ 'id' => $my_account->id, 'title' => $my_account->title, 'parent' => $my_account->parent, 'href' => '', 'group' => $my_account->group, 'meta' => $my_account->meta]); } }