Este API-ul REST WordPress instalat și activat într-o instalare standard WordPress 4.7?
Tocmai am instalat WordPress 4.7. Una dintre mențiunile din anunț este că include un API REST.
Înțelegerea mea este:
- Plugin-ul WordPress REST API nu mai este necesar, deoarece se presupune că a fost deja integrat în core în WordPress 4.7.
- API-ul REST WordPress este activat în mod implicit
Cu toate acestea, observ că într-o instalare standard WordPress 4.7, niciunul dintre endpoint-uri nu pare să funcționeze (de exemplu http://examples.com/wp-json/wp/v2/posts
).
Cum pot verifica dacă noul API REST este într-adevăr activat? Poate fi API-ul REST activat sau dezactivat din interfața standard WordPress, sau ar trebui să instalez un plugin terț pentru a face acest lucru?

4.7 are această funcționalitate activată implicit. Cea mai simplă metodă de a verifica dacă funcționează este să vizitezi adresa example.com/wp-json, unde ar trebui să vezi o listă cu endpoint-urile înregistrate.
Nu există o opțiune oficială pentru a dezactiva această funcționalitate, deoarece (cel puțin s-a discutat despre asta, dar nu sunt sigur dacă a fost inclusă în versiunea finală) unele funcționalități de bază depind de ea.
Dacă nu funcționează, primele lucruri de verificat sunt regulile din fișierul .htaccess și dacă există un director wp-json.
De asemenea, dacă URL-urile de tip /wp-json/wp/v2/posts
nu funcționează pentru tine, dar /?rest_route=/wp/v2/posts
funcționează, înseamnă că trebuie să activezi permalink-urile prietenoase în setări (sugestie oferită de Giles Butler în comentariile de mai jos).

Nu am un director wp-json sub /var/www/html
sau în subdirectoarele acestuia. Nu pare să am un fișier .htaccess
(în afară de /var/www/html/wp-content/plugins/akismet/.htaccess
), ar trebui să am unul?

Apache. Am urmat exact pașii din aceste tutoriale pentru a instala Wordpress 4.7 pe AWS: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.html și http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/hosting-wordpress.html

nu sunt familiarizat cu AWS, dar dacă ai instalat un WordPress standard, ar fi trebuit să ai un fișier .htaccess în rădăcina instalării. Dacă nu, încearcă să mergi la setări > permalink-uri, asigură-te că nu ai selectat opțiunea "simplu", salvează, apoi verifică dacă s-a generat un fișier htaccess

aveam permalink-urile setate pe opțiunea "Simplu". Le-am schimbat la "Numele articolului". WordPress nu a putut salva fișierul .htaccess din cauza permisiunilor, așa că mi-a afișat codul. Am creat un fișier .htaccess
folosind ssh
cu acel conținut. Totuși, API-ul REST continuă să returneze eroarea 404, chiar și pentru http:example.com/wp-json/

nu ar trebui să primești 404. verifică dacă funcționează alte URL-uri prietenoase, cum ar fi articolul implicit. Dacă nu funcționează, înseamnă că încă ai o problemă cu fișierul htaccess

Se pare că Permalink nu funcționează deloc, nu doar endpoint-urile API. Tocmai am observat că pot accesa postările blogului doar cu setarea "Plain". Dacă schimb Permalinks la orice altă valoare, primesc avertismentul că ar trebui să modific fișierul .htaccess
manual, ceea ce fac, dar apoi primesc eroare 404 chiar și pentru postările blogului. Cred că problema mea este cu Permalink în general, nu doar cu REST API. Poate că "fișierul .htaccess nu este scriabil" este un simptom al altei probleme.

Am găsit în sfârșit problema. Pentru că nu știam că Permalink este necesar pentru ca REST API să funcționeze, am omis în timpul configurației inițiale pasul de a seta AllowOverride All
în secțiunea <Directory "/var/www/html">
din /etc/httpd/conf/httpd.conf
. De aceea ignorau modificările mele din .htaccess
. Acum, cu un permalink diferit de Plain, endpoint-urile REST API funcționează.

Dacă utilizați permalink-uri ne-pretty, ar trebui să transmiteți ruta REST API ca parametru de query string. Ruta http://oursite.com/wp-json/ din exemplul de mai sus ar deveni astfel http://oursite.com/?rest_route=/ "https://developer.wordpress.org/rest-api/#routes-endpoints"

Am avut versiunea 4.7 și am crezut și eu că API-ul REST este dezactivat, dar am fost păcălit de URL. Pentru a vedea URL-ul corect, căutați o linie care arată cam așa:
link rel='https://api.w.org/
' href='http://mysite?rest_route=/
' />.
Deci, folosirea http://mysite?rest_route=/ ca prefix mi-a rezolvat problema. De exemplu, pentru a obține postările este suficient să introduci: http://mysite?rest_route=/wp/json
Nu am găsit în documentație mențiunea că era necesar parametrul de query. Am fost singurul care a avut această problemă?

A funcționat pentru mine pe WordPress 4.8.x. Nu știu de ce nu este documentat nicăieri.

Nu sunt singurul. Am găsit acest răspuns doar în comentariul tău după 10 minute de căutare. A trebuit să fac: www.example.com?rest_route=/wp/v2/posts

Cred că acest lucru se întâmplă când permalink-urile prietenoase nu sunt activate. Conform documentației...
"Pe site-urile fără permalink-uri prietenoase, ruta este adăugată în URL ca parametru rest_route. Pentru exemplul de mai sus, URL-ul complet ar fi atunci http://example.com/?rest_route=/wp/v2/posts/123"

iată-l -> https://developer.wordpress.org/rest-api/#routes-endpoints

Dacă API-ul REST nu funcționează din cutie sau după o instalare proaspătă și după ce ai introdus
domeniulmeu/wp-json/wp/v2/posts
atunci va trebui pur și simplu să activezi "legături permanente" (permalinks) ca post_name, localizate în:
Panou WP->Setări->Legături permanente
Sau dacă nu dorești să activezi legăturile permanente, poți pur și simplu să introduci:
domeniulmeu?rest_route=/wp/v2/posts
Omule, mi-aș dori ca WordPress să își actualizeze manualul REST pentru a fi mai prietenos cu utilizatorul. Îmi plac vechile versiuni ale documentației :)

Văd că ai rezolvat problema, dar las aici și soluția mea, deoarece a funcționat și pentru mine. Am avut aceeași problemă când am actualizat de la beta15 la API-ul principal din WordPress 4.7. Se pare că problema era că aveam niște plugin-uri care foloseau o funcție învechită register_api_field, pe care am schimbat-o în register_rest_field conform acestei note din jurnalul de modificări:
SCHIMBARE MAJORĂ: Redenumirea funcției register_api_field() în register_rest_field().
Introduce o funcție register_api_field() pentru compatibilitate inversă, care apelează _doing_it_wrong(). Cu toate acestea, register_api_field() nu va fi niciodată inclusă în nucleul WordPress, așa că ar trebui să actualizați apelurile funcțiilor.
