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:
- Abre el sitio y lee el menú de izquierda a derecha.
- Abre cada menú desplegable.
- Comprueba el móvil, donde el orden puede importar más porque todo está en vertical.
- 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 |
Relacionado
wp_get_menu_items: lee primero el orden actualwp_update_menu_itempara la jerarquía- Editar un menú de navegación