web-dev-qa-db-fra.com

WP REST API "rest_no_route" lors de la tentative de mise à jour de méta

J'ai travaillé avec l'API WP REST et toutes les commandes GET (read) extraire les données que je veux des types de publication intégrés et personnalisés ( ce plugin était un aubaine pour aider). Je peux également POST créer des publications avec des informations de niveau supérieur pour les types de publication intégrés et personnalisés. Toute mon authentification fonctionne bien. Mais lorsque j'essaie de mettre à jour post meta, j'ai été accueilli par la réponse suivante:

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

J'ai trouvé une référence dans cet article pour le besoin éventuel de code supplémentaire pour que méta fonctionne, puis j'ai trouvé ce plugin qui DID résolve le problème de la méta-publication, mais uniquement pour le type de messages intégré (ne fonctionne pas avec mes types de messages personnalisés, qui retournent toujours exactement la même erreur).

Tout ce qui précède est déroutant et complexe, je pense, en raison des capacités changeantes et de l'état de l'API WP REST lui-même.

Quelqu'un peut-il m'indiquer une documentation claire pour effectuer une mise à jour d'une méta-valeur sur un type d'article personnalisé?

UPDATE:

ok je viens de découvrir que le plugin rest-api-meta-endpoints mentionné ci-dessus permet l'écriture sur les CPT également, mais via/wp-json/wp-v2/posts/id/meta au lieu de/wp-json /wp/v2/cptname/id/meta...est-ce le comportement attendu?

Cela dit, je ne peux écrire que de nouvelles données pour tous les articles, je ne sais pas encore comment mettre à jour les méta existants, des idées?

3
Stephen

Voici ce que j’ai appris sur l’API WP REST: c’est un fouillis de code non documenté et inachevé qui promet beaucoup, mais dont la clarté est frustrante.

Cela dit, j'ai une solution de contournement que je vais publier ici, en espérant que cela sera utile pour les autres utilisateurs du même état que moi:

Je viens de découvrir que je peux mettre à jour un champ méta SI j'ai son identifiant et SI j'utilise posts dans mon chemin (même pour les cpts). Ainsi, par exemple (en supposant que mon identifiant de publication soit 1622 et que ma méta-identifiant soit 11395), cette requête fonctionnera:

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

mais ce ne sera PAS (de différentes manières)

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)

J'ai aussi compris que je pouvais obtenir toute la méta en effectuant une requête comme celle-ci:

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

Donc, je suppose que, en mettant tout cela ensemble, je pourrais faire en sorte que cela fonctionne sous la forme actuelle:

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

  2. filtrer le résultat ci-dessus pour obtenir l'identifiant de méta que je veux changer

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

Si quelqu'un a quelque chose à ajouter ou des idées sur d'éventuelles autres directions, je suis tout ouïe. Sinon, je suppose que c'est ma "solution".

Et s'il vous plaît noter les conditions préalables pour même obtenir cela au travail:

  1. Ce plugin configuré pour exposer vos types de posts et méta
  2. Ce plugin pour activer les méta extrémités.
  3. Ce que je n’ai pas mentionné ci-dessus, c’est une mention de l’authentification, car elle sort du cadre de cette discussion, mais en fonction de vos paramètres, vous devrez peut-être vous authentifier avant d’utiliser l’API, comme c’est le cas dans ma configuration jetons qui seraient normalement ajoutés à ces URL).
5
Stephen