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:

  1. Abre el sitio; confirma la etiqueta, la posición y el desplegable.
  2. Haz clic en el elemento.
  3. Comprueba en móvil.
  4. 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