Estoy tratando de obtener el menú de navegación de la respuesta JSON usando el complemento WP REST API v2 .
No hay una extensión de complemento de menú de navegación para REST API v2 , sino solo para V1.
De los tipos de publicaciones de WordPress del codex , aprendí que el menú de navegación se trata como un tipo de publicación.
Desde Rest API Doc , así es como obtenemos publicaciones de un tipo:
GET http://demo.wp-api.org/wp-json/wp/v2/types/<type>
Traté de hacerlo así:
URL : http://localhost/wptest/wp-json/wp/v2/types/nav_menu_item
Recibí el error 403.
{"code":"rest_cannot_read_type","message":"Cannot view type.","data":{"status":403}}
el servidor entendió mi solicitud pero se negó a dar los datos.
P: ¿Cómo puedo solucionar esto?
menus
json
plugin-json-api
wp-api
Murhaf Sousli
fuente
fuente
Respuestas:
Hay una extensión de complemento de menú de navegación para REST API v2: https://wordpress.org/plugins/wp-api-menus/
fuente
Como no me gusta cuando la respuesta principal es "Instalar el complemento X", así es como lo resolví:
Los menús no están disponibles actualmente en WP Rest. Entonces, lo que debe hacer es registrar su propio punto final personalizado y luego simplemente llamar a esa ruta desde la aplicación que lo necesita.
Así que incluirías algo como esto (en tu functions.php, plugin, donde sea):
Para el ejemplo anterior, accedería a los datos desde:
Puede usar el método anterior para crear cualquier ruta que desee para obtener cualquier tipo de datos que no esté disponible en el WP Rest. También es bueno si necesita procesar algunos datos antes de enviarlos a su aplicación.
fuente
get_menu()
es bastante general.false
La respuesta de @Liren funciona bien. Sin embargo, pocos principiantes pueden no ser capaces de ajustar la ruta. Aquí está el código que funciona bien con WordPress Rest API v2 con una modificación mínima.
Reemplace su nombre de menú solo en la función wp_get_nav_menu_items () . Si el nombre del menú y el slug no funcionan (Devolver falso), use la ID del menú (visible en el Tablero mientras edita ese Menú).
URL de ruta:
Más detalles cubiertos en Tutorial: API de descanso de WordPress - Obtener elementos del menú de navegación
fuente
Debe agregar
'show_in_rest' => true,
al registrar el tipo de publicación.Ver detalles aquí http://v2.wp-api.org/extending/custom-content-types/
fuente
register_post_type('nav_menu_item', array('show_in_rest' => true));
No creo que deba usarse un complemento para este tipo de tareas. Además, la respuesta de hkc no es tan mala, solo necesita alguna explicación adicional para que esto funcione con el
nav_menu_item
tipo de publicación (la que se usa para los menús de navegación de wp).Este tipo de publicación ya está registrado y, por lo tanto, debemos modificarlo, esto se hace fácilmente enganchándolo al
register_post_type_args
filtro. Este filtro nos permite cambiar los argumentos para un tipo de publicación específico. El siguiente código muestra exactamente eso para elnav_menu_item
tipo de publicación.Como habrás notado en el código anterior, el código hace un poco más que solo mostrar el tipo de publicación en REST. También altera el controlador REST de publicaciones predeterminado para mostrar una salida algo similar en REST como se describe en la respuesta de Liren . Aunque además de eso, también hace lo que hacen todos los controladores REST de tipo publicación y, por lo tanto, le brinda más control y funcionalidad. También considere esto como una opción más estable ya que no entraría en conflicto con otras rutas REST y, por último, pero no menos importante, también es mucho más conveniente trabajar con él.
fuente
Estoy de acuerdo con la respuesta de @Lirens, pero los menús deben llamarse por ID, no por slug. Además, la barra inclinada antes de la ruta del menú no es necesaria. Entonces se convierte en algo más como esto:
Así me funcionó.
fuente