15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar
23.10.2024
3 +1

Las formas más fáciles de reordenar páginas en WordPress (todos los métodos explicados)

Reordenar páginas en WordPress controla tanto la jerarquía estructural de su sitio como la secuencia en que las páginas aparecen en los menús de navegación, las respuestas de la REST API y las listas de páginas generadas por el tema. De forma predeterminada, WordPress asigna a cada página un valor menu_order de 0, lo que significa que las páginas se renderizan en orden alfabético a menos que usted anule explícitamente ese valor, ya sea a través de la Configuración de Documento del editor de bloques, un plugin dedicado o manipulación directa de la base de datos.

Esta guía cubre todos los métodos prácticos para reordenar páginas de WordPress, desde el plugin de arrastrar y soltar más rápido hasta actualizaciones SQL de menu_order sin procesar, incluyendo los escenarios exactos donde cada enfoque es apropiado y donde cada uno falla silenciosamente.

Por qué el orden de las páginas importa más allá de la navegación

La mayoría de los tutoriales tratan el reordenamiento de páginas como una preocupación puramente cosmética. No lo es. La columna menu_order en la tabla wp_posts es un entero consultable que afecta directamente a:

  • Resultados de WP_Query cuando se pasa orderby=menu_order — utilizado por muchas plantillas de constructores de páginas y bucles de temas
  • Ordenamiento del endpoint de la REST API (/wp-json/wp/v2/pages?orderby=menu_order&order=asc) consumido por configuraciones de WordPress sin cabecera y aplicaciones móviles
  • Plugins de migas de pan (Yoast SEO, Rank Math) que infieren la jerarquía de las relaciones padre-hijo combinadas con menu_order
  • Generación de sitemaps — algunos plugins de SEO usan menu_order para priorizar el orden de rastreo de páginas en sitemap.xml
  • Árboles de páginas programáticos renderizados por wp_list_pages() con sort_column=menu_order

Entender esto previene un error común: los desarrolladores reordenan páginas en el editor de Menús, asumen que el problema está resuelto, y luego descubren que el bucle de páginas de su tema o el sitemap todavía refleja la secuencia alfabética anterior.

Método 1: Plugin Simple Page Ordering (recomendado para la mayoría de los sitios)

Simple Page Ordering de 10up es la solución más eficiente para sitios con hasta varios cientos de páginas. Intercepta la tabla de lista de administración estándar de WordPress y hace que cada fila sea arrastrable, escribiendo los valores actualizados de menu_order de vuelta a la base de datos mediante AJAX en cada evento de soltar.

Instalación

  1. En su panel de WordPress, navegue a Plugins > Añadir nuevo plugin.
  2. Busque Simple Page Ordering.
  3. Haga clic en Instalar ahora, luego en Activar.

Reordenar páginas

  1. Vaya a Páginas > Todas las páginas.
  2. Pase el cursor sobre cualquier fila de página — aparece un controlador de arrastre a la izquierda.
  3. Arrastre las filas a la secuencia deseada.
  4. Suelte — el orden se guarda automáticamente mediante AJAX. No se requiere ningún botón de "Guardar".

Lo que este plugin hace internamente

Cada acción de arrastrar y soltar dispara una solicitud POST a wp-admin/admin-ajax.php con la acción simple_page_ordering y un array serializado de IDs de publicaciones en su nuevo orden. WordPress luego itera a través de ese array y emite consultas UPDATE wp_posts SET menu_order = %d WHERE ID = %d individuales. En sitios grandes con cientos de páginas, esto puede generar una ráfaga de escrituras en la base de datos — algo que vale la pena monitorear si está en un entorno compartido con límites de velocidad de consultas.

Limitaciones

  • El plugin solo afecta a los tipos de publicaciones que admiten page-attributes. Los tipos de publicaciones personalizados deben registrar explícitamente 'supports' => ['page-attributes'] en register_post_type().
  • La paginación en la tabla de lista de administración puede causar confusión: arrastrar una página a la parte superior de la página 2 no la coloca automáticamente después del último elemento de la página 1. Debe aumentar el recuento de elementos por página en "Opciones de pantalla" para ver todas las páginas en una sola pantalla antes de reordenar a través de lo que de otro modo serían límites paginados.
  • El plugin no reordena páginas en los menús de navegación — esos están controlados por una estructura wp_term_relationships separada.

Método 2: Atributos de página — Asignación manual de menu_order

WordPress expone el campo menu_order de forma nativa tanto en el Editor Clásico como en el Editor de Bloques. Este método no requiere plugins y es la opción correcta cuando necesita establecer un orden numérico preciso para un pequeño conjunto de páginas o cuando está programando actualizaciones masivas de forma programática.

Editor de Bloques (Gutenberg)

  1. Abra la página que desea reordenar.
  2. En la barra lateral derecha, haga clic en la pestaña Página (no Bloque).
  3. Desplácese hacia abajo hasta Atributos de página.
  4. Localice el campo Orden e introduzca un número entero.
  5. Haga clic en Actualizar o Guardar.

Editor Clásico

  1. Abra el editor de páginas.
  2. En la barra lateral derecha, encuentre el meta box Atributos de página.
  3. Introduzca un valor en el campo Orden.
  4. Haga clic en Actualizar.

Lógica de ordenamiento

Las páginas con valores menu_order más bajos aparecen primero. Las páginas que comparten el mismo valor recurren al orden alfabético por título. Una convención práctica:

Título de páginaPosición deseadaValor `menu_order`
Inicio1.º1
Sobre nosotros2.º2
Servicios3.º3
Portafolio4.º4
Contacto5.º5

Deje espacios entre los valores (por ejemplo, 10, 20, 30) si anticipa insertar páginas entre las existentes más adelante — esto evita tener que renumerar cada página cada vez que añada una.

Actualización masiva programática mediante WP-CLI

Para sitios que migran desde otro CMS o que reestructuran docenas de páginas a la vez, editar cada página manualmente es poco práctico. Use WP-CLI:

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

O itere a través de un array usando un script de 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

Actualización directa de la base de datos (avanzado)

Si WP-CLI no está disponible y necesita actualizar masivamente los valores de menu_order, puede ejecutar SQL directamente. Haga siempre una copia de seguridad primero.

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';

Esto es particularmente útil cuando se gestiona WordPress en un entorno de VPS Hosting donde tiene acceso directo a MySQL y necesita aplicar cambios estructurales en múltiples sitios en una sola ventana de mantenimiento.

Método 3: Editor de Menús de WordPress — Reordenar la visualización de navegación

El editor de Apariencia > Menús controla el orden en que las páginas aparecen en los menús de navegación de su sitio — esto es completamente independiente de menu_order en wp_posts. Los cambios aquí no afectan a los resultados de WP_Query, las respuestas de la REST API ni la salida de wp_list_pages().

Use este método cuando:

  • Su tema renderiza la navegación desde una ubicación de menú registrada (prácticamente todos los temas modernos lo hacen)
  • Desea un orden de páginas en la barra de navegación que difiera del menu_order estructural utilizado en las listas de páginas
  • Necesita anidar páginas como sub-elementos (desplegables) sin cambiar su padre real en WordPress

Pasos

  1. Navegue a Apariencia > Menús.
  2. Seleccione un menú existente del desplegable o haga clic en Crear un nuevo menú.
  3. En el panel Páginas de la izquierda, marque las páginas que desea incluir y haga clic en Añadir al menú.
  4. En el panel Estructura del menú, arrastre los elementos a la secuencia deseada.
  5. Para crear un sub-elemento (hijo desplegable), arrastre un elemento de menú ligeramente hacia la derecha debajo de su padre previsto.
  6. Haga clic en Guardar menú.

Distinción crítica: orden del menú vs. orden de páginas

Aquí es donde muchos administradores de WordPress introducen errores sutiles. Considere este escenario: su tema usa wp_list_pages() en una barra lateral para mostrar un índice de páginas. Usted reordena las páginas en Apariencia > Menús, pero la lista de la barra lateral permanece sin cambios. Ese es el comportamiento esperado — wp_list_pages() lee menu_order de wp_posts, no de la estructura del menú. Para corregir la barra lateral, debe usar el Método 1 o el Método 2.

Método 4: Editor de sitio completo (temas de bloques) — Bloque de Navegación

Los sitios que ejecutan temas de bloques (Twenty Twenty-Three, Kadence, variante de bloque de GeneratePress) usan el Editor de sitio completo en lugar de Apariencia > Menús. El bloque de Navegación dentro del FSE tiene su propia interfaz de arrastrar y soltar.

  1. Vaya a Apariencia > Editor.
  2. Haga clic en el bloque de Navegación en la plantilla del encabezado.
  3. Use el panel Vista de lista (icono de tres líneas en la barra de herramientas superior) para ver todos los elementos de navegación.
  4. Arrastre los elementos dentro de la Vista de lista para reordenarlos.
  5. Haga clic en Guardar.

El modelo de datos subyacente es idéntico al sistema de Menús clásico — WordPress almacena los menús de navegación del FSE como publicaciones wp_navigation — pero la interfaz de edición es completamente diferente.

Método 5: Reordenamiento programático con pre_get_posts

Para los desarrolladores que crean temas o plugins personalizados, la forma más limpia de aplicar el orden de páginas sin depender de los valores de menu_order en la base de datos es engancharse a pre_get_posts y anular los argumentos de la consulta antes de su ejecución.

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

Añada esto al functions.php de su tema o a un plugin específico del sitio. Esto garantiza que cualquier plantilla que use el bucle de consulta principal respete menu_order sin necesidad de editar los archivos de plantilla.

Comparación: todos los métodos de un vistazo

MétodoAfecta a `menu_order` en la BDAfecta a la visualización del menú de navegaciónRequiere pluginIdeal para
Plugin Simple Page OrderingNoSitios con muchas páginas, editores no técnicos
Atributos de página (campo Orden)NoNoSitios pequeños, control numérico preciso
Actualización masiva con WP-CLINoNoDesarrolladores, migraciones, operaciones masivas
Actualización SQL directaNoNoAdministradores avanzados con acceso a la BD
Apariencia > MenúsNoNoSolo visualización de navegación
Bloque de Navegación del Editor de sitio completoNoNoTemas de bloques
Hook pre_get_postsNoNoNoDesarrolladores que anulan el comportamiento de consultas

Errores comunes y casos límite

Arrastrar y soltar en límites de paginación: Como se señaló anteriormente, Simple Page Ordering no puede mover una página de la página 2 de la lista de administración a una posición en la página 1 con un solo arrastre. Aumente el recuento por página en Opciones de pantalla antes de reordenar.

Las páginas hijas heredan el contexto del padre: Al usar Atributos de página, menu_order tiene alcance para las páginas hermanas bajo el mismo padre. Una página hija con menu_order=1 aparecerá primera entre sus hermanas, pero su posición relativa a las páginas bajo un padre diferente es irrelevante.

Invalidación de capas de caché: Después de actualizar masivamente menu_order mediante SQL o WP-CLI, las entradas de caché de objetos para las consultas de páginas pueden seguir reflejando el orden anterior. En sitios que usan caché de objetos Redis o Memcached, vacíe la caché explícitamente:

wp cache flush

En sitios que ejecutan una caché de página completa (WP Rocket, LiteSpeed Cache, caché FastCGI de Nginx), purgue también la caché de páginas, de lo contrario los visitantes verán la navegación desactualizada durante la duración del TTL de la caché.

Consumidores de la REST API: Si un frontend desacoplado (Next.js, Nuxt, React) obtiene páginas de la REST API de WordPress, debe solicitar explícitamente orderby=menu_order — el ordenamiento predeterminado de la REST API para páginas es por fecha descendente. Actualice sus llamadas a la API en consecuencia:

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

Instalaciones Multisite: En WordPress Multisite, menu_order es por sitio. Ejecutar un comando WP-CLI a nivel de red requiere especificar --url= para cada subsitio o usar --network con un bucle personalizado.

Consideraciones sobre el entorno de alojamiento

El método que elija puede depender de su configuración de alojamiento. En un plan de Alojamiento Web Compartido administrado, el acceso directo a la base de datos puede estar restringido a phpMyAdmin, lo que hace que las actualizaciones de WP-CLI o SQL sin procesar sean menos convenientes — los métodos de plugin o Atributos de página son más prácticos. En un VPS con cPanel, normalmente tiene acceso completo a la terminal, lo que hace que WP-CLI sea la opción más rápida para operaciones masivas. En un Servidor Dedicado sin restricciones con acceso root, las consultas MySQL directas y los scripts WP-CLI pueden integrarse en pipelines de despliegue o trabajos cron de mantenimiento.

Si gestiona múltiples instalaciones de WordPress y necesita un orden de páginas consistente entre entornos, codificar las asignaciones de menu_order en un script WP-CLI y ejecutarlo como parte de su proceso de despliegue es el enfoque más fiable — elimina los pasos manuales y es controlable por versiones.

Para los sitios que dependen de una presencia de correo electrónico profesional junto con su configuración de WordPress, combinar su alojamiento con un servicio dedicado de Alojamiento de Correo Electrónico garantiza que sus páginas de contacto y soporte — que a menudo necesitan estar ordenadas de forma destacada — estén respaldadas por una infraestructura de comunicación igualmente fiable.

Lista de verificación de puntos clave técnicos

Antes de elegir un método de reordenamiento, verifique lo siguiente:

  • Identifique qué está reordenando realmente. El orden del menú de navegación y menu_order en wp_posts son independientes. Confirme cuál lee su tema.
  • Compruebe el bucle de páginas de su tema. ¿Usa wp_list_pages(), un WP_Query personalizado o una ubicación de menú registrada? Cada uno lee de una fuente de datos diferente.
  • Use Simple Page Ordering para flujos de trabajo editoriales donde los usuarios no técnicos necesitan reordenar páginas regularmente sin la participación de un desarrollador.
  • Use Atributos de página o WP-CLI para mayor precisión cuando necesite valores numéricos específicos o esté programando una migración.
  • Nunca use solo Apariencia > Menús si su objetivo es afectar a las listas de páginas basadas en WP_Query, sitemaps o consumidores de la REST API.
  • Vacíe la caché de objetos y la caché de páginas después de cualquier actualización masiva de menu_order para garantizar que todas las capas reflejen el nuevo orden de inmediato.
  • Deje espacios en la numeración de menu_order (10, 20, 30 en lugar de 1, 2, 3) para acomodar inserciones futuras sin tener que renumerar todo.
  • Para configuraciones de WordPress sin cabecera, pase siempre orderby=menu_order&order=asc explícitamente en las solicitudes de la REST API — no asuma el ordenamiento predeterminado.

Preguntas frecuentes

¿Cambiar el orden de las páginas en Apariencia > Menús afecta al SEO?

No. El orden del menú de navegación no tiene ningún efecto directo sobre menu_order en wp_posts, la prioridad del sitemap o el orden de rastreo. Sin embargo, si su tema genera migas de pan o índices de páginas a partir de wp_list_pages(), estos están impulsados por menu_order en la base de datos — actualice eso por separado usando el Método 1 o el Método 2.

¿Por qué el orden de mis páginas se restablece después de actualizar una página?

Esto ocurre típicamente cuando un plugin o hook de tema ejecuta wp_update_post() al guardar y pasa menu_order=0 explícitamente. Audite sus plugins activos con hooks add_action('save_post', ...) y compruebe si alguno está sobreescribiendo el campo menu_order. El plugin Simple Page Ordering no protege contra esto — necesita identificar y corregir el hook conflictivo.

¿Puedo reordenar páginas sin un plugin en el Editor de Bloques?

Sí. Abra cualquier página, vaya a la pestaña Página en la barra lateral derecha, expanda Atributos de página y establezca el campo entero Orden. Esto escribe directamente en menu_order en wp_posts. No se requiere ningún plugin.

¿Funciona Simple Page Ordering con tipos de publicaciones personalizados?

Solo si el tipo de publicación personalizado fue registrado con 'supports' => ['page-attributes']. Si controla el registro del tipo de publicación, añada esa cadena de soporte. Si es un tipo de publicación de terceros, puede añadir soporte programáticamente en functions.php:

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

¿Cuál es el valor máximo para menu_order?

La columna menu_order en wp_posts es un entero de 32 bits con signo (INT(11)), por lo que el valor máximo es 2,147,483,647. En la práctica, use valores en los cientos como máximo — los valores extremadamente grandes pueden causar comportamientos inesperados en algunas funciones de temas que realizan operaciones aritméticas sobre menu_order para cálculos de desplazamiento visual.

15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar