wp_reorder_menu_items: reordenar elementos del menú

Establece el orden de los elementos del menú indicando sus ID en la secuencia que quieras.

Argumentos

Argumento Obligatorio Significado
menu_id Sí El menú
items Sí De 1 a 200 ID únicos de elementos pertenecientes a este menú, en el orden deseado
dry_run No Informar sin escribir

Permisos

Allow content writes abierto, y edit_theme_options.

Cómo funciona

A cada elemento del array se le asigna una posición que coincide con su lugar en la lista: primera, segunda, tercera, y así sucesivamente. El orden del array es el orden resultante.

Envía la lista completa

La herramienta solo toca los elementos que nombres. Cualquier elemento que omitas conserva la posición que tenía.

Esa es la propiedad con la que hay que planificar: una lista parcial produce una mezcla de posiciones nuevas y antiguas, lo que puede dejar dos elementos compartiendo una posición y un orden que parece arbitrario.

Lee primero el menú y envía todos los elementos:

Muéstrame los elementos del menú 3 con sus ID y su orden actual. Luego, establece este orden: 12, 45, 88, 91, 103.

Indica el resultado, no un movimiento

Una instrucción como «sube Contacto una posición» depende de que el asistente entienda el orden actual, que es precisamente lo que no deberías dejar a la inferencia.

Indica el estado final deseado como una secuencia completa. Es inequívoco y se puede comprobar comparándolo con la lista que acabas de leer.

La jerarquía es independiente del orden

Esta herramienta solo establece la posición. No cambia qué elemento es hijo de cuál.

Para reestructurar la jerarquía, usa wp_update_menu_item con parent. Una secuencia habitual es: reasigna el elemento padre de los elementos que deben moverse y, a continuación, reordena dentro de su nuevo nivel.

Ten en cuenta que el orden se aplica dentro de un nivel. Reordenar una lista mixta de elementos de nivel superior y subelementos produce posiciones que solo tienen sentido una vez que tienes en cuenta la jerarquía, lo que es otra razón para leer parent junto con order antes de empezar.

La simulación

Devuelve las posiciones actuales y la lista que aplicaría. Conviene comprobarla contra la lista que has leído, porque es fácil intercambiar un ID en una secuencia larga y difícil de detectar después.

Qué devuelve

Devuelve complete y el número de elementos actualizados. Los ID no válidos o ajenos se rechazan antes de la aprobación. Un fallo de almacenamiento devuelve complete: false y failed_item_id; las actualizaciones anteriores siguen aplicadas. Inspecciona el menú antes de solicitar otra operación.

Después de reordenar

Los menús están en todas las páginas:

  1. Abre el sitio y lee el menú de izquierda a derecha.
  2. Abre cada menú desplegable.
  3. Comprueba el móvil, donde el orden puede importar más porque todo está en vertical.
  4. Purga la caché.

Sitios multilingües

El menú de cada idioma se ordena de forma independiente. Reordenar uno deja los demás como estaban, y una navegación que se lee en un orden distinto por idioma suele ser involuntaria.

Problemas comunes

Síntoma Causa
La escritura se rechaza La puerta de escritura de contenido está cerrada
pom_ai_mcp_forbidden No hay edit_theme_options
El orden está parcialmente mal Una lista incompleta; los elementos omitidos conservaron sus posiciones antiguas
Dos elementos parecen intercambiables Acabaron con la misma posición
Los subelementos se movieron de forma extraña El orden es dentro de un nivel; comprueba parent
complete: false El almacenamiento falló después de iniciarse la ejecución; inspecciona failed_item_id
El sitio muestra el orden antiguo La caché no se ha purgado