Estou tentando obter o menu de navegação da resposta JSON usando o plug-in WP REST API v2 .
Não há extensão de plug-in de menu de navegação para a API REST v2 , mas apenas para V1.
No codex WordPress Post Types , aprendi que o menu de navegação é tratado como um tipo de postagem.
No Rest API Doc , é assim que obtemos postagens de um tipo:
GET http://demo.wp-api.org/wp-json/wp/v2/types/<type>
Eu tentei fazê-lo assim:
URL : http://localhost/wptest/wp-json/wp/v2/types/nav_menu_item
Eu recebi o erro 403.
{"code":"rest_cannot_read_type","message":"Cannot view type.","data":{"status":403}}
o servidor entendeu minha solicitação, mas se recusou a fornecer os dados.
P: Como posso corrigir isso?
menus
json
plugin-json-api
wp-api
Murhaf Sousli
fonte
fonte
Respostas:
Há uma extensão de plug-in de menu de navegação para a API REST v2: https://wordpress.org/plugins/wp-api-menus/
fonte
Como eu não gosto quando a resposta principal é "Install plugin X", eis como eu o resolvi:
No momento, os menus não estão disponíveis no WP Rest. Portanto, o que você precisa fazer é registrar seu próprio ponto de extremidade personalizado e chamar a rota a partir do aplicativo que precisa.
Então você incluiria algo assim (no seu functions.php, plugin, qualquer lugar):
Para o exemplo acima, você acessaria os dados de:
Você pode usar o método acima para criar as rotas que desejar para obter qualquer tipo de dados que não esteja disponível no WP Rest. Também é bom se você precisar processar alguns dados antes de enviá-los para o seu aplicativo.
fonte
get_menu()
é bastante geral.false
A resposta @Liren funciona bem. No entanto, poucos iniciantes podem não conseguir ajustar a rota. Aqui está o código que funciona bem com a WordPress Rest API v2 com modificação mínima.
Substitua o nome do menu apenas na função wp_get_nav_menu_items () . Se o nome e o slug do menu não funcionarem (Return false), use o ID do menu (visível no Dashboard ao editar esse menu).
URL de rota:
Mais detalhes abordados no Tutorial: API de descanso do WordPress - obter itens de menu de navegação
fonte
Você precisa adicionar
'show_in_rest' => true,
ao registrar o tipo de postagem.Veja detalhes aqui http://v2.wp-api.org/extending/custom-content-types/
fonte
register_post_type('nav_menu_item', array('show_in_rest' => true));
Eu não acho que um plugin deva ser usado para esse tipo de tarefa. Além disso, a resposta do hkc não é tão ruim assim, é necessária apenas mais explicações para fazer esse trabalho funcionar com o
nav_menu_item
tipo de post (o usado para os menus de navegação wp).Esse tipo de post já está registrado e, portanto, precisamos alterá-lo, isso é facilmente feito conectando-o ao
register_post_type_args
filtro. Esse filtro nos permite alterar os argumentos para um tipo de postagem específico. O código abaixo mostra exatamente isso para onav_menu_item
tipo de postagem.Como você deve ter notado no código acima, o código faz um pouco mais do que apenas mostrar o tipo de postagem no REST. Ele também altera o controlador Posts REST padrão para mostrar uma saída um pouco semelhante no REST, conforme descrito na resposta de Liren . Embora próximo disso, ele também faça o que todos os controladores REST do tipo pós fazem e, portanto, oferece mais controle e funcionalidade. Considere também isso como uma opção mais estável, pois não entraria em conflito com outras rotas REST e, por último, mas não menos importante, também é muito mais conveniente trabalhar.
fonte
Concordo com a resposta do @Lirens, mas os menus devem ser chamados por ID, não por slug. Além disso, a barra antes do caminho do menu não é necessária. Portanto, torna-se algo mais parecido com isto:
Assim funcionou para mim.
fonte