15%

Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code :

Skills
Commencer
23.10.2024

Les moyens les plus simples de réorganiser les pages dans WordPress (toutes les méthodes expliquées)

La réorganisation des pages dans WordPress contrôle à la fois la hiérarchie structurelle de votre site et la séquence dans laquelle les pages apparaissent dans les menus de navigation, les réponses de l’API REST et les listes de pages générées par le thème. Par défaut, WordPress attribue à chaque page une valeur menu_order de 0, ce qui signifie que les pages s’affichent par ordre alphabétique sauf si vous remplacez explicitement cette valeur — soit via les Paramètres du document de l’éditeur de blocs, un plugin dédié, ou une manipulation directe de la base de données.

Ce guide couvre toutes les méthodes pratiques pour réorganiser les pages WordPress, de la méthode glisser-déposer la plus rapide aux mises à jour SQL menu_order brutes, en incluant les scénarios précis où chaque approche est appropriée et ceux où elle échoue silencieusement.

Pourquoi l’ordre des pages est important au-delà de la navigation

La plupart des tutoriels traitent la réorganisation des pages comme une préoccupation purement esthétique. Ce n’est pas le cas. La colonne menu_order dans la table wp_posts est un entier interrogeable qui affecte directement :

  • Les résultats WP_Query lorsque orderby=menu_order est transmis — utilisé par de nombreux modèles de constructeurs de pages et boucles de thèmes
  • L’ordre des points de terminaison de l’API REST (/wp-json/wp/v2/pages?orderby=menu_order&order=asc) consommé par les configurations WordPress headless et les applications mobiles
  • Les plugins de fil d’Ariane (Yoast SEO, Rank Math) qui déduisent la hiérarchie des relations parent-enfant combinées avec menu_order
  • La génération de sitemap — certains plugins SEO utilisent menu_order pour prioriser l’ordre d’exploration des pages dans sitemap.xml
  • Les arborescences de pages programmatiques rendues par wp_list_pages() avec sort_column=menu_order

Comprendre cela permet d’éviter une erreur courante : les développeurs réorganisent les pages dans l’éditeur de menus, supposent que le problème est résolu, puis découvrent que la boucle de pages de leur thème ou le sitemap reflète toujours l’ancienne séquence alphabétique.

Méthode 1 : Plugin Simple Page Ordering (recommandé pour la plupart des sites)

Simple Page Ordering par 10up est la solution la plus efficace pour les sites comportant jusqu’à plusieurs centaines de pages. Il intercepte le tableau de liste d’administration WordPress standard et rend chaque ligne déplaçable, en écrivant les valeurs menu_order mises à jour dans la base de données via AJAX à chaque événement de dépôt.

Installation

  1. Dans votre tableau de bord WordPress, accédez à Extensions > Ajouter une extension.
  2. Recherchez Simple Page Ordering.
  3. Cliquez sur Installer maintenant, puis sur Activer.

Réorganisation des pages

  1. Allez dans Pages > Toutes les pages.
  2. Survolez n’importe quelle ligne de page — une poignée de déplacement apparaît à gauche.
  3. Faites glisser les lignes dans la séquence souhaitée.
  4. Relâchez — l’ordre est enregistré automatiquement via AJAX. Aucun bouton « Enregistrer » n’est requis.

Ce que ce plugin fait réellement en coulisses

Chaque action de glisser-déposer déclenche une requête POST vers wp-admin/admin-ajax.php avec l’action simple_page_ordering et un tableau sérialisé d’identifiants de publications dans leur nouvel ordre. WordPress itère ensuite à travers ce tableau et émet des requêtes UPDATE wp_posts SET menu_order = %d WHERE ID = %d individuelles. Sur les grands sites comportant des centaines de pages, cela peut générer une rafale d’écritures en base de données — quelque chose qui mérite d’être surveillé si vous êtes dans un environnement partagé avec des limites de taux de requêtes.

Limitations

  • Le plugin n’affecte que les types de publications qui prennent en charge page-attributes. Les types de publications personnalisés doivent explicitement enregistrer 'supports' => ['page-attributes'] dans register_post_type().
  • La pagination dans le tableau de liste d’administration peut prêter à confusion : faire glisser une page vers le haut de la page 2 ne la place pas automatiquement après le dernier élément de la page 1. Vous devez augmenter le nombre d’éléments par page dans « Options de l’écran » pour voir toutes les pages sur un seul écran avant de réorganiser ce qui serait autrement des limites paginées.
  • Le plugin ne réorganise pas les pages dans les menus de navigation — ceux-ci sont contrôlés par une structure wp_term_relationships distincte.

Méthode 2 : Attributs de page — Attribution manuelle de menu_order

WordPress expose le champ menu_order nativement dans l’Éditeur classique et l’Éditeur de blocs. Cette méthode ne nécessite aucun plugin et est le bon choix lorsque vous devez définir un ordre numérique précis pour un petit ensemble de pages ou lorsque vous scriptez des mises à jour en masse de manière programmatique.

Éditeur de blocs (Gutenberg)

  1. Ouvrez la page que vous souhaitez réorganiser.
  2. Dans la barre latérale droite, cliquez sur l’onglet Page (pas Bloc).
  3. Faites défiler vers le bas jusqu’aux Attributs de page.
  4. Localisez le champ Ordre et entrez un entier.
  5. Cliquez sur Mettre à jour ou Enregistrer.

Éditeur classique

  1. Ouvrez l’éditeur de page.
  2. Dans la barre latérale droite, trouvez la méta-boîte Attributs de page.
  3. Entrez une valeur dans le champ Ordre.
  4. Cliquez sur Mettre à jour.

Logique d’ordre

Les pages avec des valeurs menu_order plus faibles apparaissent en premier. Les pages partageant la même valeur reviennent à l’ordre alphabétique par titre. Une convention pratique :

Titre de la pagePosition souhaitéeValeur `menu_order`
Accueil1ère1
À propos2ème2
Services3ème3
Portfolio4ème4
Contact5ème5

Laissez des écarts entre les valeurs (par exemple, 10, 20, 30) si vous prévoyez d’insérer des pages entre des pages existantes ultérieurement — cela évite de devoir renuméroter chaque page à chaque ajout.

Mise à jour en masse programmatique via WP-CLI

Pour les sites migrant depuis un autre CMS ou restructurant des dizaines de pages à la fois, modifier chaque page manuellement est peu pratique. Utilisez WP-CLI :

wp post update 42 --menu_order=1
wp post update 57 --menu_order=2
wp post update 61 --menu_order=3

Ou parcourez un tableau en utilisant un script shell :

declare -A pages=([42]=1 [57]=2 [61]=3 [78]=4)
for post_id in "${!pages[@]}"; do
  wp post update "$post_id" --menu_order="${pages[$post_id]}"
done

Mise à jour directe de la base de données (avancé)

Si WP-CLI n’est pas disponible et que vous devez mettre à jour en masse les valeurs menu_order, vous pouvez exécuter du SQL directement. Effectuez toujours une sauvegarde au préalable.

UPDATE wp_posts SET menu_order = 1 WHERE ID = 42 AND post_type = 'page';
UPDATE wp_posts SET menu_order = 2 WHERE ID = 57 AND post_type = 'page';
UPDATE wp_posts SET menu_order = 3 WHERE ID = 61 AND post_type = 'page';

Cela est particulièrement utile lors de la gestion de WordPress sur un environnement d’Hébergement VPS où vous disposez d’un accès MySQL direct et devez appliquer des modifications structurelles sur plusieurs sites dans une seule fenêtre de maintenance.

Méthode 3 : Éditeur de menus WordPress — Réorganisation de l’affichage de navigation

L’éditeur Apparence > Menus contrôle l’ordre dans lequel les pages apparaissent dans les menus de navigation de votre site — cela est entièrement distinct de menu_order dans wp_posts. Les modifications ici n’affectent pas les résultats WP_Query, les réponses de l’API REST, ni la sortie wp_list_pages().

Utilisez cette méthode lorsque :

  • Votre thème affiche la navigation depuis un emplacement de menu enregistré (pratiquement tous les thèmes modernes le font)
  • Vous souhaitez un ordre de pages dans la barre de navigation différent du menu_order structurel utilisé dans les listes de pages
  • Vous devez imbriquer des pages en tant que sous-éléments (menus déroulants) sans modifier leur parent WordPress réel

Étapes

  1. Accédez à Apparence > Menus.
  2. Sélectionnez un menu existant dans la liste déroulante ou cliquez sur Créer un nouveau menu.
  3. Dans le panneau Pages à gauche, cochez les pages que vous souhaitez inclure et cliquez sur Ajouter au menu.
  4. Dans le panneau Structure du menu, faites glisser les éléments dans la séquence souhaitée.
  5. Pour créer un sous-élément (enfant déroulant), faites glisser un élément de menu légèrement vers la droite sous son parent prévu.
  6. Cliquez sur Enregistrer le menu.

Distinction critique : ordre du menu vs ordre des pages

C’est là que de nombreux administrateurs WordPress introduisent des bugs subtils. Considérez ce scénario : votre thème utilise wp_list_pages() dans une barre latérale pour afficher un index de pages. Vous réorganisez les pages dans Apparence > Menus, mais la liste de la barre latérale reste inchangée. C’est un comportement attendu — wp_list_pages() lit menu_order depuis wp_posts, pas depuis la structure du menu. Pour corriger la barre latérale, vous devez utiliser la Méthode 1 ou la Méthode 2.

Méthode 4 : Éditeur de site complet (thèmes de blocs) — Bloc Navigation

Les sites utilisant des thèmes de blocs (Twenty Twenty-Three, Kadence, variante bloc de GeneratePress) utilisent l’Éditeur de site complet plutôt qu’Apparence > Menus. Le bloc Navigation dans le FSE dispose de sa propre interface glisser-déposer.

  1. Allez dans Apparence > Éditeur.
  2. Cliquez sur le bloc Navigation dans le modèle d’en-tête.
  3. Utilisez le panneau Vue en liste (icône à trois lignes dans la barre d’outils supérieure) pour voir tous les éléments de navigation.
  4. Faites glisser les éléments dans la Vue en liste pour les réorganiser.
  5. Cliquez sur Enregistrer.

Le modèle de données sous-jacent est identique au système de menus classique — WordPress stocke les menus de navigation FSE en tant que publications wp_navigation — mais l’interface d’édition est entièrement différente.

Méthode 5 : Réorganisation programmatique avec pre_get_posts

Pour les développeurs créant des thèmes ou plugins personnalisés, la façon la plus propre d’imposer l’ordre des pages sans dépendre des valeurs menu_order dans la base de données est de se connecter à pre_get_posts et de remplacer les arguments de requête avant l’exécution.

add_action( 'pre_get_posts', function( WP_Query $query ) {
    if ( ! is_admin() && $query->is_main_query() && $query->is_post_type_archive( 'page' ) ) {
        $query->set( 'orderby', 'menu_order' );
        $query->set( 'order', 'ASC' );
    }
});

Ajoutez ceci au fichier functions.php de votre thème ou à un plugin spécifique au site. Cela garantit que tout modèle utilisant la boucle de requête principale respecte menu_order sans nécessiter de modifications des fichiers de modèles.

Comparaison : toutes les méthodes en un coup d’œil

MéthodeAffecte `menu_order` dans la BDDAffecte l’affichage du menu de navigationNécessite un pluginIdéal pour
Plugin Simple Page OrderingOuiNonOuiSites avec de nombreuses pages, éditeurs non techniques
Attributs de page (champ Ordre)OuiNonNonPetits sites, contrôle numérique précis
Mise à jour en masse WP-CLIOuiNonNonDéveloppeurs, migrations, opérations en masse
Mise à jour SQL directeOuiNonNonAdministrateurs avancés avec accès BDD
Apparence > MenusNonOuiNonAffichage de navigation uniquement
Bloc Navigation de l’Éditeur de site completNonOuiNonThèmes de blocs
Hook pre_get_postsNonNonNonDéveloppeurs remplaçant le comportement des requêtes

Pièges courants et cas particuliers

Glisser-déposer aux limites de pagination : Comme indiqué ci-dessus, Simple Page Ordering ne peut pas déplacer une page de la page 2 de la liste d’administration vers une position sur la page 1 en un seul glissement. Augmentez le nombre d’éléments par page dans Options de l’écran avant de réorganiser.

Les pages enfants héritent du contexte parent : Lors de l’utilisation des Attributs de page, menu_order est limité aux pages sœurs sous le même parent. Une page enfant avec menu_order=1 apparaîtra en premier parmi ses pages sœurs, mais sa position par rapport aux pages sous un parent différent est sans importance.

Invalidation des couches de cache : Après une mise à jour en masse de menu_order via SQL ou WP-CLI, les entrées de cache d’objets pour les requêtes de pages peuvent encore refléter l’ancien ordre. Sur les sites utilisant la mise en cache d’objets Redis ou Memcached, videz explicitement le cache :

wp cache flush

Sur les sites utilisant un cache de page complet (WP Rocket, LiteSpeed Cache, cache FastCGI Nginx), purgez également le cache de page, sinon les visiteurs verront une navigation obsolète pendant la durée du TTL du cache.

Consommateurs de l’API REST : Si un frontend découplé (Next.js, Nuxt, React) récupère des pages depuis l’API REST WordPress, il doit explicitement demander orderby=menu_order — l’ordre par défaut de l’API REST pour les pages est par date décroissante. Mettez à jour vos appels API en conséquence :

GET /wp-json/wp/v2/pages?orderby=menu_order&order=asc&per_page=100

Installations multisite : Sur WordPress Multisite, menu_order est par site. L’exécution d’une commande WP-CLI à l’échelle du réseau nécessite de spécifier --url= pour chaque sous-site ou d’utiliser --network avec une boucle personnalisée.

Considérations relatives à l’environnement d’hébergement

La méthode que vous choisissez peut dépendre de votre configuration d’hébergement. Sur un plan d’Hébergement Web Partagé géré, l’accès direct à la base de données peut être limité à phpMyAdmin, rendant les mises à jour WP-CLI ou SQL brutes moins pratiques — les méthodes plugin ou Attributs de page sont plus pratiques. Sur un VPS avec cPanel, vous disposez généralement d’un accès terminal complet, faisant de WP-CLI l’option la plus rapide pour les opérations en masse. Sur un Serveur Dédié nu avec accès root, les requêtes MySQL directes et les scripts WP-CLI peuvent être intégrés dans des pipelines de déploiement ou des tâches cron de maintenance.

Si vous gérez plusieurs installations WordPress et avez besoin d’un ordre de pages cohérent entre les environnements, encoder les attributions menu_order dans un script WP-CLI et l’exécuter dans le cadre de votre processus de déploiement est l’approche la plus fiable — elle élimine les étapes manuelles et est contrôlable par version.

Pour les sites qui s’appuient sur une présence email professionnelle aux côtés de leur configuration WordPress, associer votre hébergement à un service d’Hébergement Email dédié garantit que vos pages de contact et de support — qui doivent souvent être placées en bonne position — sont soutenues par une infrastructure de communication tout aussi fiable.

Liste de contrôle des points clés techniques

Avant de choisir une méthode de réorganisation, vérifiez les points suivants :

  • Identifiez ce que vous réorganisez réellement. L’ordre du menu de navigation et menu_order dans wp_posts sont indépendants. Confirmez lequel votre thème lit.
  • Vérifiez la boucle de pages de votre thème. Utilise-t-elle wp_list_pages(), un WP_Query personnalisé, ou un emplacement de menu enregistré ? Chacun lit depuis une source de données différente.
  • Utilisez Simple Page Ordering pour les flux de travail éditoriaux où des utilisateurs non techniques ont besoin de réorganiser régulièrement des pages sans intervention de développeur.
  • Utilisez les Attributs de page ou WP-CLI pour la précision lorsque vous avez besoin de valeurs numériques spécifiques ou que vous scriptez une migration.
  • N’utilisez jamais Apparence > Menus seul si votre objectif est d’affecter les listes de pages pilotées par WP_Query, les sitemaps, ou les consommateurs de l’API REST.
  • Videz le cache d’objets et le cache de page après toute mise à jour en masse de menu_order pour vous assurer que toutes les couches reflètent immédiatement le nouvel ordre.
  • Laissez des écarts dans la numérotation menu_order (10, 20, 30 plutôt que 1, 2, 3) pour accommoder les insertions futures sans renumérotation complète.
  • Pour les configurations WordPress headless, transmettez toujours orderby=menu_order&order=asc explicitement dans les requêtes de l’API REST — ne supposez pas l’ordre par défaut.

Foire aux questions

Le changement de l’ordre des pages dans Apparence > Menus affecte-t-il le SEO ?

Non. L’ordre du menu de navigation n’a aucun effet direct sur menu_order dans wp_posts, la priorité du sitemap, ou l’ordre d’exploration. Cependant, si votre thème génère des fils d’Ariane ou des index de pages depuis wp_list_pages(), ceux-ci sont pilotés par menu_order dans la base de données — mettez cela à jour séparément en utilisant la Méthode 1 ou la Méthode 2.

Pourquoi l’ordre de mes pages se réinitialise-t-il après la mise à jour d’une page ?

Cela se produit généralement lorsqu’un plugin ou un hook de thème exécute wp_update_post() à l’enregistrement et transmet menu_order=0 explicitement. Auditez vos plugins actifs avec les hooks add_action('save_post', ...) et vérifiez si l’un d’eux écrase le champ menu_order. Le plugin Simple Page Ordering ne protège pas contre cela — vous devez identifier et corriger le hook conflictuel.

Puis-je réorganiser les pages sans plugin dans l’Éditeur de blocs ?

Oui. Ouvrez n’importe quelle page, allez dans l’onglet Page dans la barre latérale droite, développez Attributs de page, et définissez le champ entier Ordre. Cela écrit directement dans menu_order dans wp_posts. Aucun plugin n’est requis.

Simple Page Ordering fonctionne-t-il avec les types de publications personnalisés ?

Uniquement si le type de publication personnalisé a été enregistré avec 'supports' => ['page-attributes']. Si vous contrôlez l’enregistrement du type de publication, ajoutez cette chaîne de support. S’il s’agit d’un type de publication tiers, vous pouvez ajouter le support de manière programmatique dans functions.php :

add_post_type_support( 'your_post_type_slug', 'page-attributes' );

Quelle est la valeur maximale pour menu_order ?

La colonne menu_order dans wp_posts est un entier signé 32 bits (INT(11)), donc la valeur maximale est 2,147,483,647. En pratique, utilisez des valeurs dans les centaines au maximum — des valeurs extrêmement grandes peuvent provoquer un comportement inattendu dans certaines fonctions de thème qui effectuent des calculs arithmétiques sur menu_order pour les calculs de décalage visuel.

15%

Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code :

Skills
Commencer