# Réordonner et renommer les menus d’administration avec un tableau de priorités

> Adapter l'ordre et les libellés du menu principal de l'admin pour qu'un client retrouve d'un coup d'œil ce qui compte vraiment sur son site.

- Auteur : Clément Hadrot
- Publié le : 2021-10-13
- Mis à jour le : 2021-10-13
- Catégorie : Tips
- URL : https://wpmoderne.dev.wordpress-developpement.fr/tips/reordonner-renommer-menus-admin-tableau-priorites/

## L’essentiel

- custom_menu_order réorganise le menu principal
- menu_order définit la priorité d'affichage
- Le renommage passe par un filtre séparé sur $menu

Un client qui gère une boutique WooCommerce et un blog d'accompagnement nous a fait une remarque révélatrice : « Pourquoi "Commentaires" apparaît avant "Commandes" dans mon menu ? Je ne modère jamais de commentaires, mais je regarde mes commandes tous les jours. » Le menu d'administration par défaut de WordPress suit un ordre historique, pensé pour un blog classique, qui ne correspond que rarement à l'usage réel d'un site e-commerce ou vitrine moderne.

Réorganiser ce menu selon les priorités réelles d'un client demande deux ingrédients : le filtre `custom_menu_order` couplé à `menu_order`, qui contrôle l'ordre d'affichage, et le filtre `$menu` lui-même pour ajuster les libellés.

## Activer la réorganisation personnalisée

Le filtre `custom_menu_order` doit renvoyer `true` pour que WordPress accepte de prendre en compte un ordre personnalisé fourni ensuite via `menu_order` :

```
add_filter( 'custom_menu_order', '__return_true' );

function bc_ordre_menu_personnalise( $menu_ordre ) {
    return array(
        'index.php',                  // Tableau de bord
        'edit.php?post_type=shop_order', // Commandes WooCommerce
        'edit.php?post_type=product',    // Produits
        'edit.php',                      // Articles
        'upload.php',                    // Médiathèque
        'edit-comments.php',             // Commentaires, relégués en bas
        'themes.php',
        'plugins.php',
        'users.php',
        'tools.php',
        'options-general.php',
    );
}
add_filter( 'menu_order', 'bc_ordre_menu_personnalise' );
```

Chaque entrée correspond au slug exact du menu principal tel qu'enregistré par WordPress ou par l'extension concernée. Un tableau incomplet fonctionne sans erreur : les entrées non mentionnées sont simplement affichées à la suite, dans leur ordre d'origine.

> L'essentiel à retenir : custom_menu_order réorganise le menu principal ; menu_order définit la priorité d'affichage ; Le renommage passe par un filtre séparé sur $menu

## Renommer les libellés existants

Le renommage passe par une manipulation directe de la variable globale `$menu`, accrochée sur `admin_menu` avec une priorité tardive pour s'assurer que tous les menus, y compris ceux ajoutés par des extensions, sont déjà enregistrés :

```
function bc_renommer_libelles_menu() {
    global $menu;

    foreach ( $menu as $cle => $item ) {
        if ( isset( $item[2] ) && 'edit-comments.php' === $item[2] ) {
            $menu[ $cle ][0] = 'Avis clients';
        }
        if ( isset( $item[2] ) && 'edit.php?post_type=shop_order' === $item[2] ) {
            $menu[ $cle ][0] = 'Commandes du jour';
        }
    }
}
add_action( 'admin_menu', 'bc_renommer_libelles_menu', 999 );
```

La structure de chaque entrée de `$menu` suit un format fixe : libellé, capacité requise, slug, titre de page, classes CSS, identifiant HTML, et icône. Seul l'indice 0 nous intéresse ici pour le renommage du libellé visible.

## Construire le tableau de priorités avec le client

Avant d'écrire la moindre ligne de code, il vaut mieux passer dix minutes avec le client à lister, dans l'ordre, les trois ou quatre écrans qu'il consulte réellement au quotidien. Ce tableau de priorités, une fois validé, se transpose directement dans le tableau PHP de `menu_order` :

| Priorité client | Menu concerné | Slug technique |
| --- | --- | --- |
| 1 | Commandes | `edit.php?post_type=shop_order` |
| 2 | Produits | `edit.php?post_type=product` |
| 3 | Articles du blog | `edit.php` |
| 4 | Avis clients (commentaires) | `edit-comments.php` |

## Attention aux sous-menus

`menu_order` ne réorganise que le menu de premier niveau. Les sous-menus conservent leur ordre d'origine à l'intérieur de chaque entrée principale. Pour les réordonner également, il faut manipuler la variable globale `$submenu` selon le même principe, ce qui alourdit rapidement le code pour un gain souvent marginal : mieux vaut réserver cet effort aux cas où un sous-menu précis pose vraiment problème au quotidien.

> Un menu réorganisé pour un client précis reste fragile face aux mises à jour d'extensions qui ajoutent de nouvelles entrées : une vérification rapide après chaque montée de version majeure évite les mauvaises surprises.

## En résumé

Combiner `custom_menu_order`, `menu_order` et un filtre sur `$menu` permet de faire correspondre l'administration WordPress à l'usage réel d'un client, sans toucher au `menu_order` du contenu lui-même, qui répond à une logique tout à fait différente et déjà traitée séparément sur ce blog.
