web-dev-qa-db-ja.com

WP REST メタを更新しようとしたときのAPI "rest_no_route"

私はWP REST AP​​IとすべてのGET(read)コマンドを使って作業してきました。組み込みとカスタムの投稿タイプの両方から欲しいデータを引き出します( このプラグイン ところで助けになる女神だった)。また、POSTを使用して、組み込みの投稿タイプとカスタムの投稿タイプの両方についてトップレベルの情報を含む投稿を作成することもできます。私の認証はすべてうまくいっています。しかし、私がpost metaを更新しようとすると、私は次のような反応に遭遇しました。

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

私はこの article の中でメタ作業をするためのいくつかの追加コードの必要性についての言及を見つけ、そして私は this plugin which DIDメタ投稿問題を解決するただし、組み込みの投稿タイプのみ(私のカスタム投稿タイプでは機能しません。これもまったく同じエラーが返されます)。

上記のすべてが、WP REST AP​​I自体の機能と状態の変化によって、混乱して複雑になっていると思います。

カスタム投稿タイプでメタ値の更新を実行するための明確なドキュメントを誰かに教えてもらえますか?

更新:

oK上記の rest-api-meta-endpoints plugin はCPTへの書き込みも許可しますが、/ wpの代わりに/ wp-json/wp/v2/posts/id/metaを使用します。 -json/wp/v2/cptname/id/meta ...これは正しい動作ですか?

とは言っても、私は新しいデータを書くことしかできない投稿に対して、まだ既存のメタを更新する方法を考え出すことはできません。何かアイデアはありますか?

3
Stephen

ここで私がWP REST AP​​Iについて学んだことがあります。それは、文書化されていない未完成のコードの混乱です。

とは言っても、私がここに投稿する回避策があります。それが私にとって似たような漬物で他の人に役立つことを願っています。

私は自分のIDを持っていて、自分のパスにpostsを使っていれば(cptsの場合でも)メタフィールドを更新できることに気付きました。したがって、たとえば(私の投稿IDが1622で、私のメタIDが11395であると仮定すると)、このクエリは機能します。

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

しかし、これらは(さまざまな意味で)そうではありません。

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)

私はまた私がこのような質問を実行することによってすべてのメタをGETできることを考え出しました:

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

だから私はそれをすべてまとめると思います、私は現在の形でこの作品を作ることができます:

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

  2. 上記の結果をフィルタリングして、変更したいメタIDを取得します。

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

誰かが追加すべきこと、または考えられる他の方向性についての考えがある場合は、私は皆耳にします。そうでなければ、私はこれが私の "解決策"だと思います。

そしてこれを機能させるための前提条件にも注意してください。

  1. このプラグイン あなたの投稿タイプとメタデータを公開するように設定
  2. このプラグイン メタエンドポイントを有効にします。
  3. この説明の範囲外であるため、ここでは説明しませんでしたが認証については触れませんでしたが、設定によっては、私の設定の場合と同様に、APIを使用する前に認証が必要になる場合があります。通常これらのURLに追加されるトークン).
5
Stephen