{"id":67411,"date":"2024-03-04T05:08:42","date_gmt":"2024-03-04T08:08:42","guid":{"rendered":"https:\/\/kinsta.com\/pt\/?p=67411&#038;preview=true&#038;preview_id=67411"},"modified":"2024-03-08T06:48:31","modified_gmt":"2024-03-08T09:48:31","slug":"wordpress-headless-para-next-js","status":"publish","type":"post","link":"https:\/\/kinsta.com\/pt\/blog\/wordpress-headless-para-next-js\/","title":{"rendered":"Como Usar o WordPress como um CMS Headless para o Next.js"},"content":{"rendered":"<p>O WordPress existe h\u00e1 mais de 20 anos, sendo respons\u00e1vel por 42,7% de todos os sites na internet, segundo os dados da <a href=\"https:\/\/w3techs.com\/technologies\/details\/cm-wordpress\/all\/all\">W3Techs<\/a>. Al\u00e9m disso, representa 62,5% do mercado de sistemas de gerenciamento de conte\u00fado (CMSs) por tr\u00e1s dos sites.<\/p>\n<p>Atualmente, existe uma grande variedade de linguagens de programa\u00e7\u00e3o e frameworks que permitem o desenvolvimento de sites com navega\u00e7\u00e3o f\u00e1cil e desempenho elevado, ultrapassando a velocidade do WordPress, mesmo depois de realizar todas as otimiza\u00e7\u00f5es poss\u00edveis no painel do WordPress. Um exemplo not\u00e1vel \u00e9 o <a href=\"https:\/\/kinsta.com\/pt\/blog\/next-js\/\">Next.js<\/a>, um framework amplamente adotado que \u00e9 constru\u00eddo sobre o React.<\/p>\n<p>Este guia mostra como voc\u00ea pode usar o WordPress como um CMS Headless, fornecendo dados para o seu aplicativo Next.js. Tamb\u00e9m explica como implantar seu c\u00f3digo Next.js como um <a href=\"https:\/\/kinsta.com\/pt\/blog\/o-que-e-um-site-statico\/\">site est\u00e1tico<\/a> no servi\u00e7o gratuito de <a href=\"https:\/\/sevalla.com\/static-site-hosting\/\">hospedagem de site est\u00e1tico<\/a> da Kinsta.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Entendendo o WordPress Headless<\/h2>\n<p>O conceito de WordPress Headless refere-se ao uso do WordPress apenas para fun\u00e7\u00f5es de backend, como gerenciamento e armazenamento de conte\u00fado, enquanto uma plataforma separada, como o Next.js, \u00e9 usada para lidar com a interface do usu\u00e1rio (frontend).<\/p>\n<div class=\"flex-1 overflow-hidden\">\n<div class=\"react-scroll-to-bottom--css-yqcjn-79elbk h-full\">\n<div class=\"react-scroll-to-bottom--css-yqcjn-1n7m0yu\">\n<div class=\"flex flex-col text-sm pb-9\">\n<div class=\"w-full text-token-text-primary\" data-testid=\"conversation-turn-7\">\n<div class=\"px-4 py-2 justify-center text-base md:gap-6 m-auto\">\n<div class=\"flex flex-1 text-base mx-auto gap-3 md:px-5 lg:px-1 xl:px-5 md:max-w-3xl lg:max-w-[40rem] xl:max-w-[48rem] group final-completion\">\n<div class=\"relative flex w-full flex-col agent-turn\">\n<div class=\"flex-col gap-1 md:gap-3\">\n<div class=\"flex flex-grow flex-col max-w-full\">\n<div class=\"min-h-[20px] text-message flex flex-col items-start gap-3 whitespace-pre-wrap break-words [.text-message+&#038;]:mt-5 overflow-x-auto\" data-message-author-role=\"assistant\" data-message-id=\"b2278c0f-415f-4a0c-80b0-f29d3e44c8ea\">\n<div class=\"markdown prose w-full break-words dark:prose-invert dark\">\n<p>Esta divis\u00e3o permite aos desenvolvedores combinar as potentes ferramentas de gerenciamento de conte\u00fado do WordPress com os benef\u00edcios dos avan\u00e7os em desenvolvimento frontend. Isso abrange funcionalidades como renderiza\u00e7\u00e3o no lado do servidor e gera\u00e7\u00e3o de p\u00e1ginas web est\u00e1ticas por meio do Next.js, otimizando, assim, a efici\u00eancia e o desempenho do site.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<h3>Preparando seu site de WordPress<\/h3>\n<p>Antes de iniciar o desenvolvimento com Next.js, \u00e9 necess\u00e1rio preparar o seu site WordPress para atuar como um <a href=\"https:\/\/kinsta.com\/pt\/topicos\/headless-cms\/\">CMS Headless<\/a>.<\/p>\n<p>Se voc\u00ea ainda n\u00e3o tem um site WordPress, pode criar um facilmente com a Kinsta. H\u00e1 tr\u00eas m\u00e9todos para voc\u00ea criar um site WordPress usando a Kinsta:<\/p>\n<ol start=\"1\">\n<li>Crie um site <a href=\"https:\/\/kinsta.com\/pt\/blog\/instalar-wordpress-localmente\/\">em sua m\u00e1quina local<\/a> (talvez usando nossas <a href=\"https:\/\/kinsta.com\/pt\/devkinsta\/\">ferramentas DevKinsta<\/a>) antes de mover o site para nossos servidores<\/li>\n<li>Crie um site remotamente usando o <a href=\"https:\/\/kinsta.com\/pt\/docs\/hospedagem-de-wordpress\/como-comecar-wordpress\/novo-site\/\">painel MyKinsta<\/a><\/li>\n<li>Crie um site remotamente usando a <a href=\"https:\/\/kinsta.com\/pt\/blog\/wordpress-api\/\">API da Kinsta<\/a><\/li>\n<\/ol>\n<div class=\"flex-1 overflow-hidden\">\n<div class=\"react-scroll-to-bottom--css-yqcjn-79elbk h-full\">\n<div class=\"react-scroll-to-bottom--css-yqcjn-1n7m0yu\">\n<div class=\"flex flex-col text-sm pb-9\">\n<div class=\"w-full text-token-text-primary\" data-testid=\"conversation-turn-11\">\n<div class=\"px-4 py-2 justify-center text-base md:gap-6 m-auto\">\n<div class=\"flex flex-1 text-base mx-auto gap-3 md:px-5 lg:px-1 xl:px-5 md:max-w-3xl lg:max-w-[40rem] xl:max-w-[48rem] group final-completion\">\n<div class=\"relative flex w-full flex-col agent-turn\">\n<div class=\"flex-col gap-1 md:gap-3\">\n<div class=\"flex flex-grow flex-col max-w-full\">\n<div class=\"min-h-[20px] text-message flex flex-col items-start gap-3 whitespace-pre-wrap break-words [.text-message+&#038;]:mt-5 overflow-x-auto\" data-message-author-role=\"assistant\" data-message-id=\"a2260f89-8aea-459f-8932-a5677a909ea8\">\n<div class=\"markdown prose w-full break-words dark:prose-invert dark\">\n<p>Ap\u00f3s configurar um site WordPress, existem duas principais estrat\u00e9gias para obter dados do seu CMS WordPress no seu framework de frontend: <a href=\"https:\/\/kinsta.com\/pt\/blog\/wpgraphql-e-wp-rest-api\/\" data-darkreader-inline-bgcolor>WPGraphQL e API REST<\/a>.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>A API REST facilita a recupera\u00e7\u00e3o de dados no formato JSON usando abordagens JavaScript como a <a href=\"https:\/\/kinsta.com\/pt\/blog\/solicitacoes-http-javascript\/#4-how-to-make-an-http-request-in-javascript-using-the-fetch-api\">API Fetch<\/a> ou a biblioteca <a href=\"https:\/\/kinsta.com\/pt\/blog\/solicitacoes-http-javascript\/#5-how-to-make-an-http-request-in-javascript-using-axios\">Axios<\/a>. A API REST foi integrada ao WordPress desde a vers\u00e3o 4.7, o que significa que ela n\u00e3o requer nenhum plugin para funcionar. Mas para usar o WPGraphQL, que permite que voc\u00ea interaja com os dados do WordPress usando a consulta GraphQL, voc\u00ea deve instalar o plugin WPGraphQL.<\/p>\n<p>Para este guia, utilizaremos a API REST. Para acessar os dados do WordPress em formato JSON, adicione <code>\/wp-json\/wp\/v2<\/code> ao final da URL do seu site WordPress.<\/p>\n<pre><code class=\"language-bash\">http:\/\/yoursite.com\/wp-json\/wp\/v2<\/code><\/pre>\n<p>Se a API JSON n\u00e3o estiver ativada quando voc\u00ea visitar <code>http:\/\/yoursite.com\/wp-json<\/code> por padr\u00e3o, poder\u00e1 ativ\u00e1-la abrindo <strong>Permalinks<\/strong> em <strong>Settings <\/strong>no painel do WordPress e selecionando <strong>Post Name <\/strong>ou qualquer outro de sua escolha, exceto <strong>Plain<\/strong>:<\/p>\n<figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2024\/02\/configure-rest-api.png\" alt=\"Configure a API REST do WordPress para acessar dados JSON.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Configure a API REST do WordPress para acessar dados JSON.<\/figcaption><\/figure>\n<p>Isso funciona para sites locais e p\u00fablicos do WordPress, oferecendo <a href=\"https:\/\/developer.wordpress.org\/rest-api\/key-concepts\/\">endpoints<\/a>\u00a0para conte\u00fado que inclui <a href=\"https:\/\/developer.wordpress.org\/rest-api\/reference\/posts\/\" target=\"_blank\" rel=\"noopener noreferrer\">artigos<\/a>, <a href=\"https:\/\/developer.wordpress.org\/rest-api\/reference\/pages\/\" target=\"_blank\" rel=\"noopener noreferrer\">p\u00e1ginas<\/a>, <a href=\"https:\/\/developer.wordpress.org\/rest-api\/reference\/comments\/\" target=\"_blank\" rel=\"noopener noreferrer\">coment\u00e1rios<\/a> e <a href=\"https:\/\/developer.wordpress.org\/rest-api\/reference\/media\/\" target=\"_blank\" rel=\"noopener noreferrer\">m\u00eddia<\/a>. Para saber mais, leia nosso <a href=\"https:\/\/kinsta.com\/pt\/blog\/wordpress-rest-api\/\">guia completo sobre a API REST<\/a>.<\/p>\n<h2>Configurando seu ambiente Next.js<\/h2>\n<p>O Next.js ajuda os desenvolvedores a criar aplicativos web com facilidade, melhorando o desempenho e otimizando a experi\u00eancia de desenvolvimento. Um de seus principais recursos \u00e9 o roteamento baseado em arquivos, que simplifica a cria\u00e7\u00e3o de rotas.<\/p>\n<p>O Next.js tamb\u00e9m se concentra muito no desempenho, oferecendo recursos como a <a href=\"https:\/\/kinsta.com\/pt\/blog\/nextjs-vs-react\/#code-splitting\">divis\u00e3o autom\u00e1tica de c\u00f3digo<\/a>, que carrega somente o JavaScript necess\u00e1rio para cada p\u00e1gina, reduzindo significativamente o tempo de carregamento.<\/p>\n<p>Para configurar um projeto Next.js, voc\u00ea pode executar o seguinte comando e usar suas respostas padr\u00e3o:<\/p>\n<pre><code class=\"language-bash\">npx create-next-app@latest nextjs-wp-demo<\/code><\/pre>\n<p>Para este guia, voc\u00ea pode obter nosso template inicial do <a href=\"https:\/\/kinsta.com\/pt\/topicos\/git\/\">Git<\/a> seguindo estas etapas:<\/p>\n<ol start=\"1\">\n<li>Visite o <a href=\"https:\/\/github.com\/olawanlejoel\/nextjs-headless-wp\" target=\"_blank\" rel=\"noopener noreferrer\">reposit\u00f3rio do GitHub<\/a> deste projeto.<\/li>\n<li>Selecione <strong>Use this template<\/strong>\u00a0&gt; <strong>Create a new repository<\/strong> para copiar o c\u00f3digo inicial em um reposit\u00f3rio dentro da sua conta do GitHub (marque a caixa <strong>include all branches<\/strong>).<\/li>\n<li>Baixe o reposit\u00f3rio para o seu computador local e mude para a branch <a href=\"https:\/\/github.com\/olawanlejoel\/nextjs-headless-wp\/tree\/starter-files\" target=\"_blank\" rel=\"noopener noreferrer\">starter-files<\/a> usando o comando: <code>git checkout starter-files<\/code>.<\/li>\n<li>Instale as depend\u00eancias necess\u00e1rias executando o comando <code>npm install<\/code>.<\/li>\n<\/ol>\n<p>Quando a instala\u00e7\u00e3o estiver conclu\u00edda, inicie o projeto em seu computador local com <code>npm run dev<\/code>. Isso torna o projeto dispon\u00edvel em <a href=\"http:\/\/localhost:3000\/\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/localhost:3000\/<\/a>.<\/p>\n<figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2024\/02\/starter-project.png\" alt=\"Uma captura de tela de um projeto inicial criado com o Next.js.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Uma captura de tela de um projeto inicial criado com o Next.js.<\/figcaption><\/figure>\n<h3>Entendendo o projeto<\/h3>\n<p>O App Router foi introduzido no Next.js 13, substituindo o diret\u00f3rio <strong>page <\/strong> existente para roteamento. O roteamento com o App Router tamb\u00e9m envolve a cria\u00e7\u00e3o de pastas dentro do diret\u00f3rio <strong>app<\/strong>. Em seguida, voc\u00ea insere um arquivo <strong>page.js<\/strong> na pasta apropriada para definir sua rota.<\/p>\n<p>Neste projeto, <strong>app<\/strong> \u00e9 o diret\u00f3rio principal com o qual voc\u00ea estar\u00e1 interagindo, e voc\u00ea encontrar\u00e1 a seguinte estrutura de arquivos.<\/p>\n<pre><code class=\"language-bash\">\/\n|-- \/app\n    |-- \/blog\n        |-- \/[postId]\n        \t|-- page.js\n        |-- page.js\n    |-- globals.css\n    |-- layout.js\n    |-- navbar.js\n    |-- page.js<\/code><\/pre>\n<p>S\u00e3o criadas tr\u00eas p\u00e1ginas: A p\u00e1gina inicial para exibir informa\u00e7\u00f5es b\u00e1sicas, a p\u00e1gina do blog para exibir todos os artigos do seu CMS WordPress e a p\u00e1gina din\u00e2mica (<strong>[postId]\/page.js<\/strong>) para renderizar artigos individuais.<\/p>\n<p>Voc\u00ea tamb\u00e9m notar\u00e1 o componente <strong>navbar.js<\/strong>, que \u00e9 importado para o arquivo <strong>layout.js<\/strong> para criar um layout para o projeto.<\/p>\n<h2>Obtenha dados do WordPress para o Next.js<\/h2>\n<p>Com a API REST do WordPress, voc\u00ea pode buscar artigos, p\u00e1ginas e tipos de artigos personalizados enviando solicita\u00e7\u00f5es HTTP para endpoints espec\u00edficos.<\/p>\n<p>Vamos fazer uma solicita\u00e7\u00e3o de pesquisa no arquivo <strong>blog\/page.js<\/strong> para pesquisar todos os artigos no seu CMS do WordPress e, por fim, fazer uma solicita\u00e7\u00e3o para buscar cada artigo dinamicamente no <strong>blog\/[postId]\/page.js<\/strong> com base no par\u00e2metro <code>id<\/code> passado.<\/p>\n<p>Antes de fazermos essas solicita\u00e7\u00f5es, \u00e9 uma boa pr\u00e1tica adicionar o endere\u00e7o da API JSON a uma vari\u00e1vel de ambiente. Essa abordagem garante que a URL da base da API seja facilmente configur\u00e1vel e n\u00e3o codificado em v\u00e1rios arquivos.<\/p>\n<p>Crie um arquivo <strong>.env<\/strong> na raiz do seu projeto Next.js e adicione o seguinte:<\/p>\n<pre><code class=\"language-bash\">NEXT_PUBLIC_WORDPRESS_API_URL=https:\/\/yoursite.kinsta.cloud\/wp-json\/wp\/v2<\/code><\/pre>\n<p>Certifique-se de que voc\u00ea substitua a URL pela API JSON do seu site. Al\u00e9m disso, adicione <code>.env<\/code> ao arquivo <strong><a href=\"https:\/\/kinsta.com\/pt\/blog\/nao-funcionamento-do-gitignore\/\">.gitignore<\/a><\/strong> para que voc\u00ea n\u00e3o envie o arquivo para o provedor do Git.<\/p>\n<h3>Obtenha todos os artigos do WordPress para o Next.js<\/h3>\n<p>Para buscar todos os artigos do seu site WordPress, crie uma fun\u00e7\u00e3o ass\u00edncrona chamada <code>getPosts<\/code> no arquivo <strong>blog\/page.js<\/strong>. Essa fun\u00e7\u00e3o usa a API Fetch para fazer uma solicita\u00e7\u00e3o GET para o endpoint\u00a0<code>\/posts<\/code> da API REST do WordPress.<\/p>\n<pre><code class=\"language-js\">async function getPosts() {\n    const response = await fetch(\n        `${process.env.NEXT_PUBLIC_WORDPRESS_API_URL}\/posts`\n    );\n    const posts = await response.json();\n    return posts;\n}<\/code><\/pre>\n<p>Ao receber a resposta, ela converte a resposta em JSON, criando uma array de objetos de post. Esses <code>posts<\/code> podem ent\u00e3o ser renderizados no seu aplicativo Next.js, oferecendo uma lista din\u00e2mica de artigos acessados diretamente do WordPress.<\/p>\n<pre><code class=\"language-js\">const BlogPage = async () =&gt; {\n    const posts = await getPosts();\n    return (\n        &lt;div className=\"blog-page\"&gt;\n            &lt;h2&gt;All Blog Posts&lt;\/h2&gt;\n            &lt;p&gt;All blog posts are fetched from WordPress via the WP REST API.&lt;\/p&gt;\n            &lt;div className=\"posts\"&gt;\n                {posts.map((post) =&gt; {\n                    return (\n                        &lt;Link href={`\/blog\/${post.id}`} className=\"post\" key={post.id}&gt;\n                            &lt;h3&gt;{post.title.rendered}&lt;\/h3&gt;\n                            &lt;p\n                                dangerouslySetInnerHTML={{ __html: post.excerpt.rendered }}\n                            &gt;&lt;\/p&gt;\n                        &lt;\/Link&gt;\n                    );\n                })}\n            &lt;\/div&gt;\n        &lt;\/div&gt;\n    );\n};<\/code><\/pre>\n<p>Dentro do componente de p\u00e1gina do Next.js, chame <code>getPosts<\/code> de forma ass\u00edncrona para buscar os artigos. Em seguida, utilize a fun\u00e7\u00e3o <code>map<\/code> para iterar sobre o array <code>posts<\/code>, renderizando o t\u00edtulo e o resumo de cada artigo dentro de um componente <code>&lt;Link&gt;<\/code>.<\/p>\n<p>Isso n\u00e3o apenas exibe os artigos, mas tamb\u00e9m envolve cada uma delas em um link que leva a uma exibi\u00e7\u00e3o detalhada do artigo. Para isso, use o roteamento baseado em arquivo do Next.js, em que o ID do artigo \u00e9 usado para gerar o caminho da URL dinamicamente.<\/p>\n<h3>Obtenha todos os artigos din\u00e2micos do WordPress para o Next.js<\/h3>\n<p>No c\u00f3digo acima, cada artigo \u00e9 agrupado em um link que deve ajudar os usu\u00e1rios a navegar para uma exibi\u00e7\u00e3o detalhada do artigo.<\/p>\n<p>Para p\u00e1ginas de artigos individuais, o roteamento din\u00e2mico do Next.js \u00e9 utilizado para criar uma p\u00e1gina que busca e exibe um \u00fanico artigo baseado no seu ID. Uma p\u00e1gina din\u00e2mica <strong>[postID]\/page.js<\/strong> j\u00e1 foi estabelecida no c\u00f3digo dos arquivos iniciais.<\/p>\n<p>Crie uma fun\u00e7\u00e3o <code>getSinglePost<\/code>, semelhante a <code>getPosts<\/code>, para buscar um \u00fanico artigo usando o ID do artigo passado como par\u00e2metro.<\/p>\n<pre><code class=\"language-js\">async function getSinglePost(postId) {\n    const response = await fetch(\n        `${process.env.NEXT_PUBLIC_WORDPRESS_API_URL}\/posts\/${postId}`\n    );\n    const post = await response.json();\n    return post;\n}<\/code><\/pre>\n<p>No componente da p\u00e1gina din\u00e2mica, o ID do artigo \u00e9 obtido a partir dos par\u00e2metros da URL. A fun\u00e7\u00e3o <code>getSinglePost<\/code> \u00e9 ent\u00e3o chamada utilizando esse ID, e o conte\u00fado do artigo \u00e9 renderizado na p\u00e1gina.<\/p>\n<pre><code class=\"language-js\">const page = async ({ params }) =&gt; {\n    const post = await getSinglePost(params.postId);\n    \/\/ ... the rest of the page code\n};<\/code><\/pre>\n<p>Em seguida, voc\u00ea pode preencher a p\u00e1gina com os dados obtidos:<\/p>\n<pre><code class=\"language-js\">const page = async ({ params }) =&gt; {\n    const post = await getSinglePost(params.postId);\n    if (!post) {\n        return &lt;div&gt;Loading...&lt;\/div&gt;;\n    }\n    return (\n        &lt;div className=\"single-blog-page\"&gt;\n            &lt;h2&gt;{post.title.rendered}&lt;\/h2&gt;\n            &lt;div className=\"blog-post\"&gt;\n                &lt;p&gt; dangerouslySetInnerHTML={{ __html: post.content.rendered }}&gt;&lt;\/p&gt;\n            &lt;\/div&gt;\n        &lt;\/div&gt;\n    );\n};<\/code><\/pre>\n<p>Voc\u00ea pode acessar o c\u00f3digo completo em nosso <a href=\"https:\/\/github.com\/olawanlejoel\/nextjs-headless-wp\" target=\"_blank\" rel=\"noopener noreferrer\">reposit\u00f3rio GitHub<\/a>.<\/p>\n<h2>Implantando seu aplicativo Next.js na Kinsta gratuitamente<\/h2>\n<p>O servi\u00e7o de <a href=\"https:\/\/docs.sevalla.com\/static-sites\/overview\">hospedagem de site est\u00e1tico<\/a> da Kinsta oferece a voc\u00ea a capacidade de hospedar at\u00e9 100 sites est\u00e1ticos <strong>gratuitamente<\/strong>.<\/p>\n<p>Esse servi\u00e7o hospeda apenas arquivos est\u00e1ticos. Se voc\u00ea usar um <a href=\"https:\/\/kinsta.com\/pt\/blog\/geradores-de-site-estatico\/\">gerador de site est\u00e1tico<\/a> como o Next.js, poder\u00e1 configurar op\u00e7\u00f5es que criam seu projeto a partir do GitHub e implantam os arquivos est\u00e1ticos na Kinsta.<\/p>\n<h3>Renderiza\u00e7\u00e3o est\u00e1tica no Next.js<\/h3>\n<p>Para habilitar uma exporta\u00e7\u00e3o est\u00e1tica na vers\u00e3o 13 do Next.js acima, altere o modo <code>output<\/code> em <strong>next.config.js<\/strong>:<\/p>\n<pre><code class=\"language-js\">const nextConfig = {\n    output: 'export',\n};<\/code><\/pre>\n<p>Ao criar seu projeto, espera-se que o Next.js gere uma pasta de sa\u00edda contendo os ativos <a href=\"https:\/\/kinsta.com\/pt\/blog\/o-que-e-html\/\">HTML<\/a>, <a href=\"https:\/\/kinsta.com\/pt\/blog\/melhores-praticas-css\/\">CSS<\/a> e <a href=\"https:\/\/kinsta.com\/javascript\/\">JavaScript<\/a> para o seu aplicativo.<\/p>\n<p>A partir da vers\u00e3o 13, o Next.js possibilita iniciar como um site est\u00e1tico e, posteriormente, oferece a op\u00e7\u00e3o de atualizar para utilizar recursos que demandam um servidor. Ao usar esses recursos de servidor, a cria\u00e7\u00e3o das suas p\u00e1ginas n\u00e3o resulta em p\u00e1ginas est\u00e1ticas.<\/p>\n<p>Por exemplo, na rota din\u00e2mica, voc\u00ea est\u00e1 obtendo esses dados dinamicamente. Voc\u00ea precisa ser capaz de gerar todos os artigos estaticamente. Isso pode ser feito usando a fun\u00e7\u00e3o <code>generateStaticParams<\/code>.<\/p>\n<p>A fun\u00e7\u00e3o \u00e9 utilizada em conjunto com segmentos de rota din\u00e2mica para gerar rotas estaticamente no momento da cria\u00e7\u00e3o, em vez de sob demanda no momento da solicita\u00e7\u00e3o. Quando voc\u00ea compila, o <code>generateStaticParams<\/code> \u00e9 executado antes que os layouts ou p\u00e1ginas correspondentes sejam gerados.<\/p>\n<p>Em <strong>[postID]\/page.js<\/strong>, use a fun\u00e7\u00e3o <code>generateStaticParams<\/code> para obter a rota de todos os artigos:<\/p>\n<pre><code class=\"language-js\">export async function generateStaticParams() {\n    const response = await fetch(\n        `${process.env.NEXT_PUBLIC_WORDPRESS_API_URL}\/posts`\n    );\n    const posts = await response.json();\n\n    return posts.map((post) =&gt; ({\n        postId: post.id.toString(),\n    }));\n}<\/code><\/pre>\n<p>Quando voc\u00ea executar o comando build, o projeto Next.js gerar\u00e1 um diret\u00f3rio <strong>de sa\u00edda<\/strong> com os arquivos est\u00e1ticos.<\/p>\n<h3>Implantando o Next.js na hospedagem de site est\u00e1tico da Kinsta<\/h3>\n<p>Envie seus c\u00f3digos para o provedor Git de sua prefer\u00eancia (<a href=\"https:\/\/docs.sevalla.com\/applications\/git\/bitbucket#grant-access-to-the-kinsta-bitbucket-application\">Bitbucket<\/a>, <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/github#authenticate-and-authorize\">GitHub<\/a> ou <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/gitlab#authorize-the-kinsta-gitlab-application\">GitLab<\/a>). Em seguida, siga estas etapas para implantar seu site est\u00e1tico Next.js na Kinsta:<\/p>\n<ol start=\"1\">\n<li>Fa\u00e7a login ou crie uma conta para visualizar seu painel <a href=\"https:\/\/my.kinsta.com\/?lang=pt\" target=\"_blank\" rel=\"noopener noreferrer\">MyKinsta<\/a>.<\/li>\n<li>Autorize a Kinsta com seu provedor Git.<\/li>\n<li>Clique em <strong>Sites est\u00e1ticos<\/strong> na barra lateral esquerda e, em seguida, clique em <strong>Adicionar site<\/strong>.<\/li>\n<li>Selecione o reposit\u00f3rio e a branch a partir da qual voc\u00ea deseja implantar.<\/li>\n<li>Atribua um nome exclusivo ao seu site.<\/li>\n<li>Adicione as configura\u00e7\u00f5es de build no seguinte formato:\n<ul>\n<li><strong>Comando build:<\/strong> <code>npm run build<\/code><\/li>\n<li><strong>Vers\u00e3o do node:<\/strong> <code>18.16.0<\/code><\/li>\n<li><strong>Diret\u00f3rio de publica\u00e7\u00e3o:<\/strong> <code>out<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<ol start=\"7\">\n<li>Por fim, clique em <strong>Criar site<\/strong>.<\/li>\n<\/ol>\n<p>E \u00e9 isso! Agora voc\u00ea tem um site publicado em poucos segundos. Voc\u00ea receber\u00e1 um link para acessar a vers\u00e3o publicada do seu site. Posteriormente, poder\u00e1 adicionar seu pr\u00f3prio <a href=\"https:\/\/docs.sevalla.com\/applications\/domains\">dom\u00ednio<\/a> e o <a href=\"https:\/\/docs.sevalla.com\/applications\/domains#install-a-custom-ssl-certificate\">certificado SSL<\/a>, se desejar.<\/p>\n<p>Como alternativa \u00e0 hospedagem de site est\u00e1tico, voc\u00ea pode optar por implantar seu site est\u00e1tico com o servi\u00e7o de <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Hospedagem de Aplicativos<\/a> da Kinsta, que oferece maior flexibilidade de hospedagem, uma gama mais ampla de benef\u00edcios e acesso a recursos mais robustos &#8211; como escalabilidade, implanta\u00e7\u00e3o personalizada usando um Dockerfile e <a href=\"https:\/\/docs.sevalla.com\/applications\/analytics\">an\u00e1lises abrangentes<\/a> que englobam dados hist\u00f3ricos e em tempo real. Voc\u00ea tamb\u00e9m n\u00e3o precisa configurar seu projeto Next.js para renderiza\u00e7\u00e3o est\u00e1tica.<\/p>\n<h2>Resumo<\/h2>\n<p>Neste artigo, voc\u00ea aprendeu a aproveitar o WordPress Headless em um projeto Next.js para buscar e exibir artigos dinamicamente. Essa abordagem permite a integra\u00e7\u00e3o perfeita do conte\u00fado do WordPress em aplicativos Next.js, oferecendo uma experi\u00eancia moderna e din\u00e2mica na web.<\/p>\n<p>O potencial da API do CMS headless vai al\u00e9m de artigos; ela permite a recupera\u00e7\u00e3o e o gerenciamento de p\u00e1ginas, coment\u00e1rios, m\u00eddia e muito mais.<\/p>\n<p>Al\u00e9m disso, hospedar seu CMS WordPress junto com seus frameworks frontend n\u00e3o precisa ser um inc\u00f4modo. Com o painel <a href=\"https:\/\/my.kinsta.com\/?lang=pt\" target=\"_blank\" rel=\"noopener noreferrer\">MyKinsta<\/a> da Kinsta, voc\u00ea tem \u00e0 disposi\u00e7\u00e3o uma plataforma unificada para gerenciar seus <a href=\"https:\/\/kinsta.com\/pt\/hospedagem-wordpress\/\">sites<\/a>, <a href=\"https:\/\/sevalla.com\/application-hosting\/\">aplicativos<\/a>, <a href=\"https:\/\/sevalla.com\/database-hosting\/\">bancos de dados<\/a> e <a href=\"https:\/\/kinsta.com\/pt\/hospedagem-wordpress\/\">sites est\u00e1ticos de WordPress<\/a> com facilidade.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>O WordPress existe h\u00e1 mais de 20 anos, sendo respons\u00e1vel por 42,7% de todos os sites na internet, segundo os dados da W3Techs. Al\u00e9m disso, representa &#8230;<\/p>\n","protected":false},"author":287,"featured_media":67412,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[1026,977,971],"class_list":["post-67411","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-desenvolvimento-wordpress","topic-frameworks-javascript","topic-headless-cms"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Como Usar o WordPress como um CMS Headless para o Next.js - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Aprenda neste guia como melhorar o desempenho do seu site integrando o WordPress com o Next.js, um dos principais frameworks React.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/pt\/blog\/wordpress-headless-para-next-js\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Como Usar o WordPress como um CMS Headless para o Next.js\" \/>\n<meta property=\"og:description\" content=\"Aprenda neste guia como melhorar o desempenho do seu site integrando o WordPress com o Next.js, um dos principais frameworks React.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/pt\/blog\/wordpress-headless-para-next-js\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstapt\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-04T08:08:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-08T09:48:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/03\/all-how-to-use-wordpress-as-a-headless-cms-for-next-js.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Joel Olawanle\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Aprenda neste guia como melhorar o desempenho do seu site integrando o WordPress com o Next.js, um dos principais frameworks React.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/03\/all-how-to-use-wordpress-as-a-headless-cms-for-next-js.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@olawanle_joel\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_pt\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joel Olawanle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo estimado de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/wordpress-headless-para-next-js\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/wordpress-headless-para-next-js\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"Como Usar o WordPress como um CMS Headless para o Next.js\",\"datePublished\":\"2024-03-04T08:08:42+00:00\",\"dateModified\":\"2024-03-08T09:48:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/wordpress-headless-para-next-js\/\"},\"wordCount\":2126,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/wordpress-headless-para-next-js\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/03\/all-how-to-use-wordpress-as-a-headless-cms-for-next-js.jpg\",\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/pt\/blog\/wordpress-headless-para-next-js\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/wordpress-headless-para-next-js\/\",\"url\":\"https:\/\/kinsta.com\/pt\/blog\/wordpress-headless-para-next-js\/\",\"name\":\"Como Usar o WordPress como um CMS Headless para o Next.js - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/wordpress-headless-para-next-js\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/wordpress-headless-para-next-js\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/03\/all-how-to-use-wordpress-as-a-headless-cms-for-next-js.jpg\",\"datePublished\":\"2024-03-04T08:08:42+00:00\",\"dateModified\":\"2024-03-08T09:48:31+00:00\",\"description\":\"Aprenda neste guia como melhorar o desempenho do seu site integrando o WordPress com o Next.js, um dos principais frameworks React.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/wordpress-headless-para-next-js\/#breadcrumb\"},\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/pt\/blog\/wordpress-headless-para-next-js\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/wordpress-headless-para-next-js\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/03\/all-how-to-use-wordpress-as-a-headless-cms-for-next-js.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/03\/all-how-to-use-wordpress-as-a-headless-cms-for-next-js.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/wordpress-headless-para-next-js\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/pt\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Headless CMS\",\"item\":\"https:\/\/kinsta.com\/pt\/topicos\/headless-cms\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Como Usar o WordPress como um CMS Headless para o Next.js\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/pt\/#website\",\"url\":\"https:\/\/kinsta.com\/pt\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solu\u00e7\u00f5es de hospedagem Premium, r\u00e1pida e segura\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/pt\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-PT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/pt\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/pt\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstapt\/\",\"https:\/\/x.com\/kinsta_pt\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\",\"name\":\"Joel Olawanle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g\",\"caption\":\"Joel Olawanle\"},\"description\":\"Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 300 technical articles majorly around JavaScript and it's frameworks.\",\"sameAs\":[\"https:\/\/joelolawanle.com\/\",\"https:\/\/www.linkedin.com\/in\/olawanlejoel\/\",\"https:\/\/x.com\/olawanle_joel\",\"https:\/\/www.youtube.com\/@joelolawanle\"],\"gender\":\"male\",\"knowsAbout\":[\"JavaScript\",\"React\",\"Next.js\"],\"knowsLanguage\":[\"English\"],\"jobTitle\":\"Technical Editor\",\"worksFor\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/pt\/blog\/author\/joelolawanle\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Como Usar o WordPress como um CMS Headless para o Next.js - Kinsta\u00ae","description":"Aprenda neste guia como melhorar o desempenho do seu site integrando o WordPress com o Next.js, um dos principais frameworks React.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/pt\/blog\/wordpress-headless-para-next-js\/","og_locale":"pt_PT","og_type":"article","og_title":"Como Usar o WordPress como um CMS Headless para o Next.js","og_description":"Aprenda neste guia como melhorar o desempenho do seu site integrando o WordPress com o Next.js, um dos principais frameworks React.","og_url":"https:\/\/kinsta.com\/pt\/blog\/wordpress-headless-para-next-js\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstapt\/","article_published_time":"2024-03-04T08:08:42+00:00","article_modified_time":"2024-03-08T09:48:31+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/03\/all-how-to-use-wordpress-as-a-headless-cms-for-next-js.jpg","type":"image\/jpeg"}],"author":"Joel Olawanle","twitter_card":"summary_large_image","twitter_description":"Aprenda neste guia como melhorar o desempenho do seu site integrando o WordPress com o Next.js, um dos principais frameworks React.","twitter_image":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/03\/all-how-to-use-wordpress-as-a-headless-cms-for-next-js.jpg","twitter_creator":"@olawanle_joel","twitter_site":"@kinsta_pt","twitter_misc":{"Escrito por":"Joel Olawanle","Tempo estimado de leitura":"10 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/pt\/blog\/wordpress-headless-para-next-js\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/pt\/blog\/wordpress-headless-para-next-js\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"Como Usar o WordPress como um CMS Headless para o Next.js","datePublished":"2024-03-04T08:08:42+00:00","dateModified":"2024-03-08T09:48:31+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/pt\/blog\/wordpress-headless-para-next-js\/"},"wordCount":2126,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/pt\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/pt\/blog\/wordpress-headless-para-next-js\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/03\/all-how-to-use-wordpress-as-a-headless-cms-for-next-js.jpg","inLanguage":"pt-PT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/pt\/blog\/wordpress-headless-para-next-js\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/pt\/blog\/wordpress-headless-para-next-js\/","url":"https:\/\/kinsta.com\/pt\/blog\/wordpress-headless-para-next-js\/","name":"Como Usar o WordPress como um CMS Headless para o Next.js - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/pt\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/pt\/blog\/wordpress-headless-para-next-js\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/pt\/blog\/wordpress-headless-para-next-js\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/03\/all-how-to-use-wordpress-as-a-headless-cms-for-next-js.jpg","datePublished":"2024-03-04T08:08:42+00:00","dateModified":"2024-03-08T09:48:31+00:00","description":"Aprenda neste guia como melhorar o desempenho do seu site integrando o WordPress com o Next.js, um dos principais frameworks React.","breadcrumb":{"@id":"https:\/\/kinsta.com\/pt\/blog\/wordpress-headless-para-next-js\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/pt\/blog\/wordpress-headless-para-next-js\/"]}]},{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/blog\/wordpress-headless-para-next-js\/#primaryimage","url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/03\/all-how-to-use-wordpress-as-a-headless-cms-for-next-js.jpg","contentUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/03\/all-how-to-use-wordpress-as-a-headless-cms-for-next-js.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/pt\/blog\/wordpress-headless-para-next-js\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/pt\/"},{"@type":"ListItem","position":2,"name":"Headless CMS","item":"https:\/\/kinsta.com\/pt\/topicos\/headless-cms\/"},{"@type":"ListItem","position":3,"name":"Como Usar o WordPress como um CMS Headless para o Next.js"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/pt\/#website","url":"https:\/\/kinsta.com\/pt\/","name":"Kinsta\u00ae","description":"Solu\u00e7\u00f5es de hospedagem Premium, r\u00e1pida e segura","publisher":{"@id":"https:\/\/kinsta.com\/pt\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/pt\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-PT"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/pt\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/pt\/","logo":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstapt\/","https:\/\/x.com\/kinsta_pt","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07","name":"Joel Olawanle","image":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g","caption":"Joel Olawanle"},"description":"Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 300 technical articles majorly around JavaScript and it's frameworks.","sameAs":["https:\/\/joelolawanle.com\/","https:\/\/www.linkedin.com\/in\/olawanlejoel\/","https:\/\/x.com\/olawanle_joel","https:\/\/www.youtube.com\/@joelolawanle"],"gender":"male","knowsAbout":["JavaScript","React","Next.js"],"knowsLanguage":["English"],"jobTitle":"Technical Editor","worksFor":"Kinsta","url":"https:\/\/kinsta.com\/pt\/blog\/author\/joelolawanle\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/67411","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/users\/287"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/comments?post=67411"}],"version-history":[{"count":8,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/67411\/revisions"}],"predecessor-version":[{"id":67498,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/67411\/revisions\/67498"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/67411\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/67411\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/67411\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/67411\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/67411\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/67411\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/67411\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/67411\/translations\/es"},{"href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/67411\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/media\/67412"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/media?parent=67411"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/tags?post=67411"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/topic?post=67411"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}