L'API REST di Wordpress è installata e abilitata in un'installazione vanilla di Wordpress 4.7?


29

Ho appena installato Wordpress 4.7. Una delle menzioni nell'annuncio è che presenta un'API REST.

La mia comprensione è:

  • Il plug-in API REST di Wordpress non è più necessario, perché probabilmente è già stato unito al core in Wordpress 4.7.
  • L'API REST di Wordpress è abilitata per impostazione predefinita

Tuttavia, noto che in un'installazione vanilla di Wordpress 4.7, nessuno degli endpoint sembra funzionare (ad esempio http://examples.com/wp-json/wp/v2/posts).

Come posso sapere se la nuova API REST è realmente attivata? L'API REST può essere abilitata o disabilitata con l'interfaccia utente Wordpress vanilla o devo installare un plug-in di terze parti per farlo?


1
Esiste un tag di rilevamento nell'origine della pagina? <link rel='https://api.w.org/' href='https://example.com/wp-json/' />Sembra funzionare solo sui miei siti.
Rarst

@Rarst, se io grep -r "<link rel='https://api.w.org/'" .nella htmldirectory, restituisce un hit nel file ./wp-includes/rest-api.phpcon questo testo:echo "<link rel='https://api.w.org/' href='" . esc_url( $api_root ) . "' />\n";
Pep

Non nel codice sorgente , nell'origine HTML di una pagina dal tuo sito nel browser.
Rarst

1
@Primo, sì, vedo<link href="http://example.com/wp-json/" rel="https://api.w.org/">
Pep

Cosa ti dà l'apertura del link nel browser? Con WP_DEBUG abilitato?
Rarst

Risposte:


21

4.7 è abilitato per impostazione predefinita. Il modo più semplice per verificare se funziona è solo visitare l'http di esempio.com/wp-json e si dovrebbe ottenere un elenco di punti finali registrati lì

Non esiste un'opzione ufficiale per disabilitarlo poiché (almeno si è parlato di esso non sono sicuro che sia arrivato nella versione), alcune funzionalità di base dipendono da esso.

Le cose più ovvie da verificare se non funziona sono le tue regole htaccess e hai una directory wp-json


Non ho una directory wp-json sotto /var/www/htmlo le sue sottodirectory. Non mi sembra di avere un .htaccessfile (a parte /var/www/html/wp-content/plugins/akismet/.htaccess, dovrei averne uno?
Pep,

@Pep, quale server web usi? hai abbastanza permalink?
Mark Kaplun il

Apache. Ho seguito esattamente i passaggi di questi tutorial per installare Wordpress 4.7 su AWS: docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.html e docs.aws.amazon.com/AWSEC2/latest/UserGuide/…
Pep il

non hai familiarità con AWS ma se hai installato un wordpress vanilla dovresti avere un .htaccess alla radice della tua installazione. Se non provi ad andare su impostazione> permalink, assicurati di non essere in una posizione normale, salva e quindi controlla se è stato generato un errore
Mark Kaplun il

6
Ho finalmente trovato il problema. Poiché non sapevo che Permalink sarebbe stato necessario per il funzionamento dell'API REST, durante l'installazione iniziale ho saltato il passaggio da impostare AllowOverride Allnella <Directory "/var/www/html">sezione di /etc/httpd/conf/httpd.conf. Ecco perché ignorava le mie modifiche a .htaccess. Ora con un permalink diverso da PLain, gli endpoint dell'API REST funzionano.
Pep,

11

4.7 avevo anche pensato che l'API REST fosse disabilitata, ma ero ingannato dall'URL. Per vedere l'URL corretto, cerca una riga simile a questa:

link rel = 'https://api.w.org/ ' href = ' http://mysite?rest_route=/' />. Quindi, usando http: // mysite? Rest_route = / come prefisso ho risolto il mio problema. Ad esempio, per recuperare i post è sufficiente digitare: http: // mysite? Rest_route = / wp / json

Non sono riuscito a trovare sulla documentazione che il parametro di query fosse necessario. Ero l'unico?


Ha funzionato per me con wordpress 4.8.x Non so perché questo non sia documentato da nessuna parte.
Anirudha,

2
Non l'unico. Ho trovato questa risposta nel tuo commento solo dopo una ricerca di 10 minuti. Necessario:www.example.com?rest_route=/wp/v2/posts
Eugene K,

3
Penso che questo accada quando permalink graziosi non sono abilitati. Dai documenti ... "Sui siti senza permalink piuttosto, il percorso viene invece aggiunto all'URL come parametro rest_route. Per l'esempio sopra, l'URL completo sarebbe quindi example.com/?rest_route=/wp/v2/posts / 123 "
Giles Butler,


1

Vedo che hai risolto il problema ma lasciando la mia soluzione qui perché ha funzionato anche per me. Ho avuto lo stesso problema durante l'aggiornamento da beta15 all'API principale in wp 4.7. Si è scoperto che avevo alcuni plugin che utilizzavano una funzione deprecata register_api_field che ho cambiato in register_rest_field secondo questa nota nel log delle modifiche:

BREAKING CHANGE: Rinomina register_api_field () in register_rest_field ().

Introduce una funzione register_api_field () per la retrocompatibilità, che chiama _doing_it_wrong (). Tuttavia, register_api_field () non sarà mai assegnato al core di WordPress, quindi dovresti aggiornare le tue chiamate di funzione.


1

Se l'API REST non funziona immediatamente o dopo una nuova installazione e dopo aver digitato

mydomain/wp-json/wp/v2/posts 

allora dovrai semplicemente attivare i tuoi "permalink" come nome_dominio:

Dashboard WP-> Impostazioni-> Permalink

Oppure, se non desideri attivare i permalink, puoi semplicemente digitare:

mydomain?rest_route=/wp/v2/posts

Amico, vorrei che WordPress aggiornasse il loro manuale Rest per essere più user-friendly. Mi piace la vecchia versione di documenti :)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.