it-swarm.com.de

WP REST API "rest_no_route" beim Versuch, Meta zu aktualisieren

Ich habe mit der WP REST -API gearbeitet und alle GET-Befehle (Lesen) ziehen die gewünschten Daten sowohl aus integrierten als auch aus benutzerdefinierten Beitragstypen ( dieses Plugin war ein godsend übrigens zu helfen). Ich kann auch POST erstellen, um Posts mit Informationen auf oberster Ebene sowohl für integrierte als auch für benutzerdefinierte Post-Typen zu erstellen. Alle meine Authentifizierung funktioniert einwandfrei. Aber wenn ich versuche, Post-Meta zu aktualisieren, wurde ich von der folgenden Antwort getroffen:

{
  "code": "rest_no_route",
  "message": "No route was found matching the URL and request method",
  "data": {
    "status": 404
  }
}

Ich habe in diesem Artikel einen Hinweis darauf gefunden, dass möglicherweise zusätzlicher Code erforderlich ist, damit Meta funktioniert, und habe dann dieses Plugin gefunden, mit dem DID das Problem mit dem Meta-Posting gelöst wird, aber nur für der eingebaute Beitragstyp (funktioniert nicht mit meinen benutzerdefinierten Beitragstypen, die immer noch genau den gleichen Fehler zurückgeben).

Alles oben Genannte ist verwirrend und wird durch die sich ändernden Funktionen und den Status der WP REST API selbst noch verstärkt.

Kann mir jemand eine klare Dokumentation zur Durchführung einer Meta-Wert-Aktualisierung für einen benutzerdefinierten Beitragstyp zeigen?

UPDATE:

ok Ich habe gerade herausgefunden, dass das rest-api-meta-endpoints-Plugin das oben erwähnt wurde, auch das Schreiben in CPTs ermöglicht, aber über/wp-json/wp/v2/posts/id/meta anstelle von/wp-json Ist dies das erwartete Verhalten?

Das heißt, für jeden Beitrag kann ich nur neue Daten schreiben, kann nicht herausfinden, wie man vorhandene Meta noch aktualisiert, irgendwelche Ideen?

3
Stephen

Hier ist, was ich über die WP REST-API gelernt habe: Es ist ein Durcheinander von undokumentiertem und unvollendetem Code mit vielversprechendem, aber frustrierend wenig Klarheit.

Trotzdem habe ich eine Problemumgehung, die ich hier veröffentlichen werde, in der Hoffnung, dass sie für andere in einer ähnlichen Situation nützlich ist:

Ich habe gerade festgestellt, dass ich ein Metafeld aktualisieren kann, wenn ich seine ID habe und wenn ich posts in meinem Pfad verwende (auch für cpts). So funktioniert beispielsweise diese Abfrage (unter der Annahme, dass meine Beitrags-ID 1622 und meine Meta-ID 11395 lautet):

POST https://example.com/wp-json/wp/v2/posts/1622/meta/11395?value=mykeyvalue

aber diese werden nicht (auf verschiedene Weise):

POST https://example.com/wp-json/wp/v2/posts/1622/meta?key=mykeyname&value=mykeyvalue (will ADD new but not edit existing)

POST https://example.com/wp-json/wp/v2/posts/1622/?key=mykeyname&value=mykeyvalue (404)

POST https://example.com/wp-json/wp/v2/my-cpt/1622/meta?key=mykeyname&value=mykeyvalue (404)

POST https://example.com/wp-json/wp/v2/my-cpt/1622/meta/11395?value=mykeyvalue (404)

Ich habe auch herausgefunden, dass ich das gesamte Meta abrufen kann, indem ich eine Abfrage wie die folgende durchführe:

GET https://example.com/wp-json/wp/v2/posts/1622/meta/

Wenn ich also alles zusammenstelle, könnte ich diese Arbeit in der aktuellen Form machen, indem ich:

  1. GET https://example.com/wp-json/wp/v2/posts/1622/meta/

  2. filtern des obigen Ergebnisses, um die Meta-ID zu erhalten, die ich ändern möchte

  3. POST https://example.com/wp-json/wp/v2/posts/1622/meta/11395?value=mykeyvalue

Wenn jemand etwas hinzuzufügen hat oder Gedanken über mögliche andere Richtungen hat, bin ich ganz Ohr. Ansonsten denke ich, das ist meine "Lösung".

Beachten Sie auch die Voraussetzungen, damit dies überhaupt funktioniert:

  1. Dieses Plugin konfiguriert, um Ihre Beitragstypen und Meta verfügbar zu machen
  2. Dieses Plugin , um Meta-Endpunkte zu aktivieren.
  3. Was ich oben nicht erwähnt habe, war die Erwähnung der Authentifizierung, da diese außerhalb des Rahmens dieser Diskussion liegt. Abhängig von Ihren Einstellungen müssen Sie sich jedoch möglicherweise authentifizieren, bevor Sie die API verwenden können, wie dies in meinem Setup der Fall ist (mit Oauth und Token, die normalerweise zu diesen URLs hinzugefügt würden).
5
Stephen