wp_update_menu_item: actualizar un elemento del menú
Cambia un elemento del menú existente, conservando lo que no pases.
Argumentos
| Argumento | Obligatorio | Significado |
|---|---|---|
menu_id |
Sí | El menú al que pertenece el elemento |
item_id |
Sí | El elemento que se va a cambiar |
title |
No | Nueva etiqueta |
url |
No | Nueva URL de destino |
parent |
No | Nuevo ID del elemento principal |
object / object_id |
No | Volver a apuntar a un objeto de WordPress |
dry_run |
No | Informar sin escribir |
Permisos
Allow content writes abierto y edit_theme_options.
Conserva lo que omites
La herramienta lee primero el elemento existente y mantiene su título, URL, elemento principal, tipo de objeto e ID de objeto a menos que proporciones sustituciones.
Eso hace que una edición limitada sea realmente limitada: pasar solo title renombra el elemento y lo deja donde está, apuntando hacia donde apuntaba.
Es una actualización con mejor comportamiento que la mayoría en el servidor, y significa que puedes cambiar con seguridad una propiedad sin volver a indicar el resto.
Cambiar el elemento principal mueve el subárbol
Pasar parent re-asigna el elemento principal del elemento — y sus elementos secundarios se mueven con él.
Dado que el listado de elementos sí informa de parent y order, puedes ver la estructura antes de cambiarla. Haz:
Muéstrame los elementos del menú 3 con sus IDs y elementos principales. Luego mueve el elemento 88 bajo el elemento 42.
Establecer parent a 0 promueve un elemento al nivel superior.
Volver a apuntar un elemento
Dos maneras, y cada una se comporta de forma distinta después:
Pasa url para establecer una dirección literal. WordPress no la mantendrá, así que se rompe si cambia el slug del destino.
Pasa object y object_id juntos para vincularlo a un registro de WordPress. WordPress mantiene la URL correcta a medida que el destino cambia.
Convertir un enlace personalizado frágil en un enlace de objeto mantenido es una de las cosas más útiles que hace esta herramienta, y merece la pena hacerlo siempre que toques un elemento que apunta a tu propio contenido.
La etiqueta es independiente del destino
El título de un elemento del menú no se actualiza cuando cambia el título de la página enlazada. Son valores separados.
Así que una página renombrada de "Services" a "What we do" conserva una entrada de menú que dice "Services" hasta que alguien la cambie aquí. Merece la pena comprobarlo después de cualquier renombrado de página. Consulta wp_update_page.
El simulacro
Informa de lo que escribiría. Dado que la herramienta combina con los valores existentes, el simulacro es la forma más clara de confirmar que la combinación produjo lo que esperabas — especialmente al cambiar el elemento principal.
Después de escribir
Los menús están en todas las páginas, así que comprueba visualmente:
- Abre el sitio; confirma la etiqueta, la posición y el desplegable.
- Haz clic en el elemento.
- Comprueba en móvil.
- Purga la caché.
Sitios multilingües
El menú de cada idioma es independiente. Renombrar un elemento en un idioma deja los demás sin cambios, lo que produce un sitio cuya navegación dice cosas distintas según el idioma — normalmente no de forma deliberada.
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 |
| Los elementos secundarios se movieron inesperadamente | Re-asignar el elemento principal mueve el subárbol |
| El elemento sigue apuntando a la página antigua | La URL es un enlace personalizado, no un enlace de objeto |
| La etiqueta está obsoleta tras un renombrado de página | Las etiquetas y los títulos de página son independientes |
| El sitio parece sin cambios | La caché no ha sido purgada |
Relacionado
wp_get_menu_items— leer antes de escribirwp_create_menu_itemwp_reorder_menu_items