Personnaliser la barre de menu de WordPress

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 :

Barre menu de WordPress
Barre menu de WordPress pour un utilisateur identifié.

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.

Page de profil d'un utilisateur
Page de profil d'un utilisateur. Sur la gauche, un lien permet d'accéder au Tableau de bord.
Tableau de bord
Tableau de bord pour un utilisateur identifié.

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 :

Barre de menu modifiée
Barre de menu modifiée

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]);
  }
}

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *