O sistema de ge­ren­ci­a­mento de conteúdo (CMS) WordPress é muito popular. Em com­pa­ra­ção com outros CMS, ele oferece mais fa­ci­li­dade na criação de sites para diversas fi­na­li­da­des. Pessoas com bons co­nhe­ci­men­tos em Office também podem manter um site sem grandes problemas. Além disso, os ad­mi­nis­tra­do­res web podem recorrer a mais de 55.000 plugins para executar várias tarefas do site. A maioria desses plugins tem uma versão básica gratuita.

Dica

O Hospedagem para WordPress oferece diversos pacotes para que você crie seu site com mais fa­ci­li­dade e segurança. Simples ins­ta­la­ção, segurança integrada e pla­ta­forma otimizada.

O que é WordPress REST API?

O termo WordPress REST API refere-se a uma interface que pos­si­bi­lita a co­mu­ni­ca­ção com o banco de dados do WordPress. API significa Ap­pli­ca­tion Pro­gram­ming Interface (Interface de Pro­gra­ma­ção de Aplicação). Ela permite a co­mu­ni­ca­ção entre di­fe­ren­tes programas conforme um modelo definido, ou seja, ela funciona como um de­co­di­fi­ca­dor, que pos­si­bi­lita uma conversa entre dois sistemas que “falam línguas di­fe­ren­tes”. No nosso artigo APIs: o que você precisa saber sobre in­ter­fa­ces de pro­gra­ma­ção você encontra mais in­for­ma­ções sobre o tema.

A abre­vi­a­tura REST significa Re­pre­sen­ta­ti­o­nal State Transfer (Trans­fe­rên­cia de Estado Re­pre­sen­ta­ci­o­nal). Ela foi de­sen­vol­vida em 1994 pelo cientista da com­pu­ta­ção es­ta­du­ni­dense Roy Fielding e descreve os prin­cí­pios da troca de in­for­ma­ções:

  • Uni­for­mi­dade: As URLs para acesso aos recursos devem ser uniformes, con­sis­ten­tes e aces­sí­veis por uma abordagem comum, como GET.
  • Separação Client-Server: Se a tec­no­lo­gia do lado do servidor mudar (por exemplo, do WordPress), a aplicação do lado do cliente (por exemplo, do app) ainda deve ser capaz de acessá-la.
  • Stateless: O servidor não altera seu estado quando uma API faz uma nova so­li­ci­ta­ção, mas não a salva.
  • Pos­si­bi­li­dade de ar­ma­ze­na­mento em cache: Assegura que o lado do servidor e do cliente funcionem em alta ve­lo­ci­dade e em con­for­mi­dade.
  • Sistema em camadas: O acesso é possível por múltiplas camadas (layers).
  • Código on demand (opcional): o código para a execução local é enviado ao cliente somente sob demanda.

Esses prin­cí­pios são con­si­de­ra­dos padrão pelo core do WordPress desde a versão 4.7 do software, isto é, hoje eles fazem parte do “coração” desse sistema de ge­ren­ci­a­mento de conteúdo. Até 13 de maio de 2018, existia o plugin WP REST API (WP API). A partir da versão 5.x do WordPress, elementos que expandem as pos­si­bi­li­da­des de co­mu­ni­ca­ção com outras apli­ca­ções web foram in­cor­po­ra­dos no core do sistema.

WordPress Managed Hosting com a IONOS!

Comece seu site com rapidez e beneficie-se da versão mais segura e atu­a­li­zada do WordPress!

  • Domínio
  • SSL
  • Suporte 24 horas

Por que usar WordPress REST API?

A interface do WordPress REST pos­si­bi­lita a co­mu­ni­ca­ção direta com os bancos de dados do WordPress, que armazenam todas as in­for­ma­ções de um site. Esses bancos de dados são usados com o sistema de ge­ren­ci­a­mento de bancos de dados MySQL, um software open source. Para que essa co­mu­ni­ca­ção ocorra, existem comandos que permitem o acesso por meio da API integrada ao WordPress. Várias são as abor­da­gens possíveis:

Acesso do terminal ao banco de dados

A API do WordPress REST permite acessar os conteúdos de um site do WordPress pelo prompt de comando no Windows:

  • Clique com o botão direito do mouse em Windows > “Executar” > digite “cmd” na janela > “OK”
  • Ative a busca na barra de tarefas > insira “cmd” > clique no app “prompt de comando”

Já o acesso por macOS é feito da seguinte forma:

  • Use a com­bi­na­ção de teclas “cmd” + [espaço] + “Terminal” e clique duas vezes no resultado da busca
  • Na barra de menus superior do desktop, selecione “Ir para” > “Programas de serviços” e clique duas vezes em “Terminal” na janela que aparecer
  • Em “Dock”, clique em “Programas” > “Programas de serviços” > “Terminal”

Adicione os comandos no prompt piscando na tela. Por exemplo: depois de C:\Users\seu-nome-de-usuario>_ insira a seguinte instrução: curl -X OPTIONS -i https://seu-dominio.com.br/wp-json/.

Comece apertando “Enter” e, logo a seguir, você verá o output na tela. Esses são os dados básicos do site, com as opções per­mi­ti­das (“OPTIONS”). Aqui você pode ver que o comando GET está sendo au­to­ri­zado (“Allow: GET”)

Imagem: WordPress REST API pelo prompt de comando
Teste de conexão para API REST via prompt de comando ou terminal, com emissão de mensagem HTTP

Uti­li­zando exa­ta­mente o comando a seguir, você obterá todas as in­for­ma­ções do banco de dados: curl -X GET http://seu-dominio.com.br/wp-json/.

Usar WordPress REST API com acesso pelo navegador

Os conteúdos do banco de dados do WordPress também podem ser acessados por uma so­li­ci­ta­ção do navegador HTTP. Para isso, também é preciso usar JSON: https://seu-dominio.com.br/wp-json/

Fato

JSON é a abre­vi­a­tura de Ja­vaS­cript Object Notation (Notação de Objeto em Ja­vaS­cript), um formato baseado em texto para a troca de dados. Nosso tutorial sobre a notação LD JSON e nosso artigo sobre consulta de dados cross-domain com JSONP mostram como é fácil aprender a ler esse formato mul­ti­fun­ci­o­nal.

Imagem: WordPress REST API: acesso por um navegador
O acesso HTTP por API REST gera um output no navegador com as in­for­ma­ções prin­ci­pais sobre o site no WordPress. A imagem mostra as in­for­ma­ções em JSON e no cabeçalho

As in­for­ma­ções acessadas são como um livro aberto na sua frente. A API do WordPress REST tem vários comandos que pos­si­bi­li­tam acesso detalhado a de­ter­mi­na­dos com­po­nen­tes do banco de dados, como aos posts, com o seguinte código: https://seu-dominio.com.br/wp-json/wp/v2/posts.

Assim, você terá uma visão geral de todos os posts do banco de dados, inclusive às versões, aos links, aos conteúdos de mídia, às edições an­te­ri­o­res e a muito mais. Cada post no banco de dados do WordPress é iden­ti­fi­cado com um ID exclusivo:

Imagem: WordPress REST API: visualização de um post no banco de dados
O post com ID 6576 no banco de dados MySQL do site no WordPress

Para exibir um único post no navegador, insira o ID do post da seguinte forma: https://seudominio.com.de/wp-json/wp/v2/posts/6576

Imagem: WordPress REST API: leitura de post individual no navegador ao informar o ID
Com o ID, todas as in­for­ma­ções sobre um post são lidas do banco de dados

Esse pro­ce­di­mento pode ser executado com todos os conteúdos: não só posts, mas também páginas, conteúdos de mídia, autores e outros. O REST API Handbook, manual para WordPress REST API, contém a re­fe­rên­cia de comandos completa, e pode ser en­con­trado na página do WordPress.org para de­sen­vol­ve­do­res.

WordPress REST API na prática

Um exemplo simples esclarece na prática a função da API do WordPress REST: um novo site deseja coletar notícias de outros pro­ve­do­res da internet. Só é possível fazer isso com a WordPress REST API se o site que dis­po­ni­bi­liza as notícias também for pro­gra­mado no WordPress. Para a coleta das notícias, os conteúdos são con­sul­ta­dos com seus IDs nos ser­vi­do­res se­le­ci­o­na­dos.

Imagem: WordPress REST API: exemplo simples
O site XYZ NEWS coleta cons­tan­te­mente in­for­ma­ções es­pe­cí­fi­cas dos sites X, Y e Z para permitir que os usuários tenham acesso a elas

Para ter sempre acesso aos conteúdos mais atuais, há diversas pos­si­bi­li­da­des de pro­gra­ma­ção. Algumas dessas pos­si­bi­li­da­des são a linguagem de script PHP ou a bi­bli­o­teca Ja­vaS­cript jQuery. Dois exemplos simples de códigos para WordPress REST API mostram essas pos­si­bi­li­da­des.

Leitura de um post com PHP

Para ler um post de outro site no WordPress, é ne­ces­sá­rio integrar um trecho de código na página HTML, entre <body> e </body>. Essa página deve ser capaz de processar PHP, no exemplo abaixo, com o nome de arquivo “test-wp-rest-api.php”. Os nomes dos campos exibidos podem ser retirados da consulta JSON acima (guide, title, link, content, etc.). O trecho de código consiste em um script PHP, que recupera in­for­ma­ções, e em um elemento HTML, que devolve os dados lidos pelo PHP:

<?php
$url = 'https://www.meu-site.com.br/wp-json/wp/v2/posts/6576'; // Caminho da consulta JSON com ID
$data = file_get_contents($url); // Transfere o conteúdo em uma variável
$mydata = json_decode($data, true); // Decodifica JSON
?>
<h1>PHP: Ler post por WordPress REST API</h1> // Cabeçalho
<div id="mydata">
<?php echo $mydata['content']['rendered']; ?> // Output de 'content' com o ID 6576
</div>
php
Imagem: WordPress REST API: um exemplo prático
Estas são as in­for­ma­ções mostradas para o post do exemplo anterior com o ID 6576. Na parte de cima com jQuery e na parte de baixo com PHP

Leitura do post com jQuery

Além da linguagem de scripts PHP, os conteúdos também podem ser lidos pela bi­bli­o­teca jQuery. Para fazer a leitura, essa bi­bli­o­teca deve ser integrada ao cabeçalho da página. Depois disso, a leitura também fun­ci­o­nará com a extensão .html.

<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> // Integrar jQuery
<script>// Seção para leitura dos dados do post
$(function() {
$.getJSON('https://mtmedia.de/wp-json/wp/v2/posts/6576', function(alldata) {
var contentElm = alldata.content.rendered
$(contentElm).appendTo("#mydata");
});
});
</script>
</head>
<body>
<h1>jQuery: Ler post por WordPress REST API</h1> // Cabeçalho
<div id="mydata"> Output de 'content' do post com ID 6576
</div>
</body>
php

O resultado é idêntico ao mostrado pelo navegador usando PHP output. Com jQuery, o conteúdo é devolvido no DIV container “mydata”, sem uma variável adicional.

O que acontece em sites que usam outros CMS?

Essa API é chamada WordPress REST API por ser parte in­te­grante da pro­gra­ma­ção do WordPress. Isso significa que a interface só consegue consultar páginas que também usarem o WordPress.

Imagem: WordPress REST API: consulta HTTP em outro CMS
Se um site não tiver sido feito no WordPress, não é possível usar WordPress REST API. Ao tentar fazer isso, é emitida a mensagem de erro 404

Ao tentar consultar sites que não foram criados com WordPress, a mensagem de erro 404 é emitida. Contudo, existem outras formas de acessar o banco de dados do CMS de sites de outras pla­ta­for­mas.

Bloquear acessos ao WordPress REST API

Nem sempre ad­mi­nis­tra­do­res de sites sentem-se con­for­tá­veis em permitir que outros acessem seus bancos de dados, até mesmo para reu­ti­li­zar in­for­ma­ções. Para evitar que isso ocorra, eles ativam uma barreira no back-end do WordPress.

Imagem: WordPress REST API: desabilita o acesso aos dados
Com o plugin Disable WP REST API do WordPress, o acesso aos dados do site é bloqueado e permitido somente aos usuários com login

Como qualquer outro plugin do WordPress, o Disable WP REST API deve ser ativado após a ins­ta­la­ção para impedir o acesso não au­to­ri­zado. Não é ne­ces­sá­rio fazer outras con­fi­gu­ra­ções.

Imagem: WordPress REST API: impedir acesso por plugin
O plugin Disable WP REST API do WordPress bloqueia acessos de terceiros

O código de status “401” (não au­to­ri­zado) significa que o servidor recusou a o pedido HTTP devido a uma au­ten­ti­ca­ção incorreta ou inválida. Ao contrário do que ocorre no erro 403, contudo, a au­ten­ti­ca­ção é possível.

Vários sites são pro­te­gi­dos dessa forma para evitar o roubo au­to­má­tico de conteúdos. Pedir permissão antes de usar conteúdos de terceiros denota não somente educação, mas respeito aos direitos autorais. Para testar em seu próprio site, basta con­fi­gu­rar o plugin como “de­sa­ti­vado”. Para que os conteúdos do banco de dados possam ser novamente acessados. Os dados contidos no plugin não serão perdidos.

Ir para o menu principal