# Command Palette de WordPress 6.3 : l’utiliser et y ajouter vos commandes

> La Command Palette de WordPress 6.3 permet de naviguer au clavier dans l'éditeur de site, mais aussi d'y enregistrer ses propres commandes personnalisées avec useCommand et useCommandLoader.

- Auteur : Clément Hadrot
- Publié le : 2023-09-05
- Mis à jour le : 2023-09-05
- Catégorie : FSE
- URL : https://wpmoderne.dev.wordpress-developpement.fr/fse/command-palette-wordpress-63-usecommand/

## L’essentiel

- Ctrl+K ou Cmd+K ouvre la palette depuis l'éditeur de site
- useCommand enregistre une commande statique unique
- useCommandLoader génère des commandes dynamiques à partir de données

Un développeur habitué aux palettes de commandes des éditeurs de code modernes a été le premier, sur l'équipe, à repérer la nouveauté : depuis WordPress 6.3, un raccourci clavier familier — Ctrl+K sous Windows et Linux, Cmd+K sous macOS — ouvre une fenêtre de recherche rapide dans l'éditeur de site, permettant de naviguer vers un template, un article récent ou un réglage sans quitter le clavier.

Au-delà de l'usage courant, cette Command Palette s'ouvre également aux développeurs : il est possible d'y enregistrer ses propres commandes, statiques ou générées dynamiquement, pour accélérer des actions récurrentes sur un projet donné.

## Utiliser la palette au quotidien

Une fois ouverte, la palette propose une recherche en texte libre qui couvre les pages, les articles récents, les templates et plusieurs réglages d'administration. Taper le début du nom d'un template suffit généralement à le retrouver plus vite qu'en naviguant manuellement dans le panneau latéral.

## Enregistrer une commande statique avec useCommand

> L'essentiel à retenir : Ctrl+K ou Cmd+K ouvre la palette depuis l'éditeur de site ; useCommand enregistre une commande statique unique ; useCommandLoader génère des commandes dynamiques à partir de données

Pour ajouter une commande fixe, l'API JavaScript expose le hook `useCommand`, importé depuis le module `@wordpress/commands`. Sur un projet où les rédacteurs consultaient fréquemment une page de mentions légales pour vérification, on a ajouté un raccourci direct :

```
import { useCommand } from '@wordpress/commands';

useCommand( {
    name: 'mon-theme/ouvrir-mentions-legales',
    label: 'Ouvrir les mentions légales',
    icon: 'admin-page',
    callback: () => {
        window.location.href = '/wp-admin/post.php?post=42&action=edit';
    },
} );
```

## Générer des commandes dynamiques avec useCommandLoader

Quand le nombre de commandes possibles dépend de données variables — par exemple, ouvrir directement l'un des templates personnalisés existants — le hook `useCommandLoader` devient plus adapté. Il reçoit une fonction qui retourne dynamiquement la liste des commandes disponibles, à partir d'une source de données comme l'API REST.

```
import { useCommandLoader } from '@wordpress/commands';

useCommandLoader( {
    name: 'mon-theme/ouvrir-template',
    hook: () => {
        const commands = templates.map( ( template ) => ( {
            name: template.slug,
            label: `Ouvrir le template ${ template.title }`,
            callback: () => navigateToTemplate( template.id ),
        } ) );
        return { commands, isLoading: false };
    },
} );
```

## Où placer ce code

- Un script chargé via `enqueue_block_editor_assets`, ciblant spécifiquement l'éditeur de site.
- Une dépendance déclarée sur `wp-commands` dans l'enregistrement du script.
- Un test systématique après chaque mise à jour majeure, l'API restant récente et sujette à ajustements.

## Limites observées à ce stade

L'API reste jeune : la documentation officielle couvre les cas de base, mais certains comportements avancés, comme le regroupement de commandes par catégorie personnalisée, demandent encore de lire directement le code source du module `@wordpress/commands` pour en comprendre les subtilités.

## Retirer une commande devenue inutile

Un point moins documenté concerne la désactivation d'une commande enregistrée par erreur ou devenue obsolète après une refonte. Le hook `useCommand` ne propose pas de fonction de retrait directe : la pratique observée dans l'écosystème consiste plutôt à conditionner l'enregistrement lui-même, en amont, via une vérification côté PHP ou JavaScript avant même que le hook ne s'exécute, plutôt que d'essayer de supprimer une commande déjà enregistrée en cours de session.

## En résumé

La Command Palette est une de ces fonctionnalités dont l'utilité ne saute pas immédiatement aux yeux, jusqu'à ce qu'on en prenne l'habitude. Pour un thème ou une extension destinés à une équipe qui passe plusieurs heures par jour dans l'éditeur de site, y ajouter quelques commandes ciblées avec `useCommand` ou `useCommandLoader` représente un investissement modeste pour un gain de confort quotidien bien réel.
