A API REST do Wordpress está instalada e ativada em uma instalação baunilha do Wordpress 4.7?

29

Acabei de instalar o Wordpress 4.7. Uma das menções no anúncio é que ele possui uma API REST.

Meu entendimento é:

  • O plugin da API REST do Wordpress não é mais necessário, porque supostamente já foi mesclado com o núcleo do Wordpress 4.7.
  • A API REST do Wordpress é ativada por padrão

No entanto, notei que em uma instalação baunilha do Wordpress 4.7, nenhum dos pontos de extremidade parece funcionar (por exemplo http://examples.com/wp-json/wp/v2/posts).

Como posso saber se a nova API REST está realmente ativada? A API REST pode ser ativada ou desativada com a interface do usuário do Wordpress vanilla ou devo instalar um plug-in de terceiros para fazer isso?

Pep
fonte
1
Existe uma etiqueta de descoberta na origem da página? <link rel='https://api.w.org/' href='https://example.com/wp-json/' />Parece apenas funcionar nos meus sites.
Rarst
@Rarst, se eu estiver grep -r "<link rel='https://api.w.org/'" .no htmldiretório, ele retornará um resultado no arquivo ./wp-includes/rest-api.phpcom este texto:echo "<link rel='https://api.w.org/' href='" . esc_url( $api_root ) . "' />\n";
Pep
Não no seu código- fonte , na fonte HTML de uma página do seu site no navegador.
Rarst
1
@Rarst, sim, eu vejo #<link href="http://example.com/wp-json/" rel="https://api.w.org/">
Pep
O que abrir o link no navegador leva você? Com o WP_DEBUG ativado?
Rarst

Respostas:

21

4.7 tem ativado por padrão. A maneira mais fácil de verificar se está funcionando é apenas visitar o URL example.com/wp-json e você deve obter uma lista de pontos de extremidade registrados lá

Não há uma opção oficial para desativá-lo, pois (pelo menos houve uma conversa sobre o assunto, não tenho certeza se ele chegou à versão), algumas funcionalidades principais dependem disso.

As coisas mais óbvias para verificar se não está funcionando são as regras do htaccess, e você tem um diretório wp-json

Mark Kaplun
fonte
Eu não tenho um diretório wp-json em /var/www/htmlseus subdiretórios. Eu não parecem ter um .htaccessarquivo (que não /var/www/html/wp-content/plugins/akismet/.htaccess, que eu deveria ter um?
Pep
@Pep, qual servidor web você usa? você tem links permanentes?
precisa
Apache. Segui exatamente as etapas destes tutoriais para instalar o Wordpress 4.7 na AWS: docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.html e docs.aws.amazon.com/AWSEC2/latest/UserGuide/…
Pep
não familiarizado com a AWS, mas se você instalou um vanilla wordpress, deveria ter um .htaccess na raiz da sua instalação. Se não tentar ir para a configuração> permalinks, certifique-se você não está na configuração simples, salvar e, em seguida, verificar se um htaccess foi gerado
Mark Kaplun
6
Eu finalmente encontrei o problema. Como eu não sabia que o Permalink seria necessário para que a API REST funcionasse, pulei durante a instalação inicial a etapa a ser definida AllowOverride Allna <Directory "/var/www/html">seção /etc/httpd/conf/httpd.conf. Por isso estava ignorando minhas alterações .htaccess. Agora, com um link permanente diferente do PLain, os terminais da API REST funcionam.
Pep
11

Eu também tinha pensado que a API REST estava desativada, mas fui enganado pela URL. Para ver o URL correto, procure uma linha parecida com a seguinte:

link rel = ' https://api.w.org/' href = ' http://mysite?rest_route=/' />. Portanto, usando http: // mysite? Rest_route = / como o prefixo resolveu meu problema. Por exemplo, para recuperar as postagens, basta digitar: http: // mysite? Rest_route = / wp / json

Não encontrei na documentação que o parâmetro de consulta fosse necessário. Eu era o único?

Edward
fonte
Trabalhou para mim com o wordpress 4.8.x Não sei por que isso não está documentado em nenhum lugar.
Anirudha
2
Não é o único. Só encontrei esta resposta no seu comentário após 10 minutos de pesquisa. Precisava fazer:www.example.com?rest_route=/wp/v2/posts
Eugene K
3
Acho que isso acontece quando permalinks bastante não estão ativados. Dos documentos ... "Em sites sem links permanentes, a rota é adicionada ao URL como o parâmetro rest_route. No exemplo acima, o URL completo seria então example.com/?rest_route=/wp/v2/posts / 123 "
Giles Butler
1

Vejo que você corrigiu o problema, mas deixou minha solução aqui, pois também funcionou para mim. Eu tive esse mesmo problema ao atualizar da beta15 para a API principal no wp 4.7 Acontece que eu tinha alguns plugins que estavam usando uma função obsoleta register_api_field, que mudei para register_rest_field de acordo com esta nota no changelog:

BREAKING CHANGE: Renomeie register_api_field () para register_rest_field ().

Introduz uma função register_api_field () para compatibilidade com versões anteriores, que chama _doing_it_wrong (). No entanto, register_api_field () nunca será comprometido com o núcleo do WordPress, portanto, você deve atualizar suas chamadas de função.

fogo amigo
fonte
1

Se a API REST não estiver pronta para uso ou após uma nova instalação e depois de digitar

mydomain/wp-json/wp/v2/posts 

você precisaria simplesmente ativar seus "links permanentes" como post_name localizado:

Painel WP-> Configurações-> Permalinks

Ou, se você não deseja ativar os links permanentes, basta digitar:

mydomain?rest_route=/wp/v2/posts

Cara, eu gostaria que o WordPress atualizasse o manual do Rest para ser mais fácil de usar. Eu gosto da versão antiga do docs :)

samjco
fonte