wp_create_menu_item: crea un elemento de menú
Añade un elemento a un menú de navegación.
Argumentos
| Argumento | Obligatorio | Significado |
|---|---|---|
menu_id |
Sí | El menú al que añadirlo |
title |
Sí | La etiqueta que ven los visitantes |
url |
Sí | Hacia dónde apunta |
parent |
No | ID del elemento padre; omítelo para el nivel superior |
object / object_id |
No | Enlaza a un objeto de WordPress en lugar de a una URL |
dry_run |
No | Informa sin crear |
Permisos
Allow content writes abierto, y edit_theme_options.
Por defecto crea un enlace personalizado
Pasar solo title y url produce un elemento de menú personalizado: una URL literal que WordPress no mantiene.
Si la página a la que apunta cambia más adelante su slug, el elemento de menú se rompe silenciosamente. Nada te avisa, y seguirá apuntando a una URL que devuelve un 404.
Para crear en su lugar un enlace mantenido, pasa object y object_id juntos — por ejemplo object: page con el ID de la página. WordPress mantiene entonces la URL correcta a medida que cambia el destino.
Prefiere la forma de objeto siempre que enlaces a algo del sitio. Es la diferencia entre un menú que sobrevive al trabajo sobre el contenido y uno que se deteriora en silencio.
Especifica el padre, o irá al nivel superior
Omitir parent coloca el elemento en la parte superior del menú — en la barra de navegación principal en lugar de dentro de un desplegable.
Esto rara vez es lo que se quiere al añadir, por ejemplo, una página de servicios que pertenece bajo Servicios. Lee primero el menú, encuentra el ID del padre previsto y pásalo.
Muéstrame los elementos del menú 3 con sus IDs y padres. Luego añade «Mantenimiento» bajo «Servicios».
Posición
Los elementos nuevos van al final de su nivel. Para colocar uno en otro sitio, créalo y luego establece el orden explícitamente con wp_reorder_menu_items.
Comprueba que el destino existe y es público
Nada valida la URL ni el objeto. Se puede crear un elemento que apunte a:
- una página en borrador, que los visitantes no pueden ver;
- una entrada eliminada;
- una URL con una errata;
- un sitio externo.
Los cuatro se crean sin quejarse. Confirma el destino antes de añadirlo y abre el enlace después.
La simulación
Informa de lo que crearía, sin crearlo. Útil para confirmar que el padre y el destino se resuelven como se pretendía.
Después de crear
Los menús aparecen en todas las páginas, así que la verificación es rápida y merece la pena hacerla siempre:
- Abre el sitio y mira el menú.
- Comprueba que el elemento está en el nivel correcto, en el desplegable correcto.
- Haz clic en él.
- Compruébalo en móvil, donde el menú suele renderizarse de forma distinta.
- Purga la caché.
Sitios multilingües
Cada idioma tiene su propio menú. Añadir un elemento a uno lo añade solo a ese idioma, y un menú completo en español y al que le falta una entrada en inglés es un resultado habitual y confuso.
Planifica la adición equivalente en el menú de cada idioma.
Problemas comunes
| Síntoma | Causa |
|---|---|
| La escritura se rechaza | Puerta de escritura de contenido cerrada |
pom_ai_mcp_forbidden |
No edit_theme_options |
| El elemento está en la barra principal, no en un desplegable | Se omitió parent |
| El enlace se rompe más tarde | Se creó como una URL personalizada en lugar de como un enlace de objeto |
| Apunta a algo invisible | El destino es un borrador |
| No aparece en absoluto | El menú no está asignado a una ubicación del tema |
| Solo un idioma lo tiene | Los menús son por idioma |
Relacionado
wp_get_menu_items— lee primero la estructurawp_reorder_menu_items- Editar un menú de navegación