Ich habe gerade Wordpress 4.7 installiert. Eine der Erwähnungen in der Ankündigung ist, dass es eine REST-API bietet.
Mein Verständnis ist:
- Das Wordpress REST API-Plugin wird nicht mehr benötigt, da es vermutlich bereits mit dem Core in Wordpress 4.7 zusammengeführt wurde.
- Die Wordpress-REST-API ist standardmäßig aktiviert
Ich stelle jedoch fest, dass in einer Vanilla Wordpress 4.7-Installation keiner der Endpunkte zu funktionieren scheint (zum Beispiel http://examples.com/wp-json/wp/v2/posts
).
Wie kann ich feststellen, ob die neue REST-API wirklich aktiviert ist? Kann die REST-API mit der Benutzeroberfläche von Vanilla Wordpress aktiviert oder deaktiviert werden, oder sollte ich ein Plugin eines Drittanbieters installieren, um dies zu tun?
<link rel='https://api.w.org/' href='https://example.com/wp-json/' />
Scheint nur auf meinen Websites zu arbeiten.grep -r "<link rel='https://api.w.org/'" .
imhtml
Verzeichnis bin , gibt es einen Treffer in der Datei./wp-includes/rest-api.php
mit diesem Text zurück:echo "<link rel='https://api.w.org/' href='" . esc_url( $api_root ) . "' />\n";
<link href="http://example.com/wp-json/" rel="https://api.w.org/">
Antworten:
4.7 hat es standardmäßig aktiviert. Die einfache Möglichkeit zu überprüfen, ob es funktioniert, besteht darin, die URL example.com/wp-json zu besuchen. Dort sollten Sie eine Liste der registrierten Endpunkte erhalten
Es gibt keine offizielle Option, um es zu deaktivieren, da (zumindest wurde darüber geredet, ob es in der Version verfügbar ist) einige Kernfunktionen davon abhängen.
Die naheliegendsten Dinge, auf die Sie achten sollten, wenn es nicht funktioniert, sind Ihre htaccess-Regeln. Haben Sie ein wp-json-Verzeichnis?
quelle
/var/www/html
oder seinen Unterverzeichnissen. Ich habe anscheinend keine.htaccess
Datei (außer/var/www/html/wp-content/plugins/akismet/.htaccess
sollte ich eine haben?AllowOverride All
im<Directory "/var/www/html">
Abschnitt von festgelegten Schritt übersprungen/etc/httpd/conf/httpd.conf
. Deshalb hat es meine Änderungen an ignoriert.htaccess
. Mit einem anderen Permalink als PLain funktionieren die REST-API-Endpunkte jetzt.Ich hatte 4,7 auch gedacht, dass die REST-API deaktiviert war, aber ich wurde durch die URL ausgetrickst. Um die richtige URL zu finden, suchen Sie eine Zeile, die ungefähr so aussieht:
link rel = '
https://api.w.org/
' href = 'http://mysite?rest_route=/
' />. Also, mit http: // mysite? Rest_route = / als Präfix mein Problem gelöst. Um beispielsweise die Posts wiederherzustellen, muss Folgendes eingegeben werden : http: // mysite? Rest_route = / wp / jsonIch konnte in der Dokumentation nicht finden, dass der Abfrageparameter benötigt wurde. War ich der einzige?
quelle
www.example.com?rest_route=/wp/v2/posts
Ich sehe, dass Sie das Problem behoben haben, aber meine Lösung hier belassen, da sie auch für mich funktioniert hat. Ich hatte das gleiche Problem beim Update von Beta15 auf die Core-API in WP 4.7. Es stellte sich heraus, dass ich einige Plugins hatte, die eine veraltete Funktion register_api_field verwendeten, die ich gemäß diesem Hinweis im Changelog in register_rest_field änderte:
quelle
Wenn die REST-API nicht sofort oder nach einer Neuinstallation und nach dem Eingeben funktioniert
dann müsstest du einfach deine "permalinks" als post_name ausfindig machen:
WP Dashboard-> Einstellungen-> Permalinks
Wenn Sie keine Permalinks aktivieren möchten, können Sie einfach Folgendes eingeben:
Mann, ich wünschte, WordPress würde sein Rest-Handbuch aktualisieren, um benutzerfreundlicher zu sein. Ich mag die alte Version von docs :)
quelle