Updata Metadata WP Rest API

时间:2019-06-18 作者:stemon

我正在尝试通过单击事件更新从前端创建的元数据。

{
  "id": 1248,
   .
   .
   .
   "metadata": {
       "wishlist_array": [
          ""
        ],
   .
   .
   .
想法是向数组中添加一个post ID,post ID来自另一个post类型。它是通过updateWishlist() 由单击事件触发的功能

这是我的JS:

updateWishlist: function(e, postID) {
      e.stopImmediatePropagation();

      // GET
      fetch("http://ohalocal.local/wp-json/wp/v2/oha_wishlist/1248")
        .then(function(response) {
          return response.json();
        })
        .then(function(wishlistPost) {
          var wishlist_array = wishlistPost.metadata.wishlist_array; //Getting the current metadata array
          wishlist_array.push(postID); //Add postID to array

          // POST
          fetch("http://ohalocal.local/wp-json/wp/v2/oha_wishlist/1248", {
            method: "POST",
            headers: {
              "Content-Type": "application/json",
              "X-WP-Nonce": phpVarObj.nonce
            },
            body: JSON.stringify({
              metadata: { wishlist_array: JSON.stringify(wishlist_array) }
              //Send new array to server
            })
          })
            .then(function(response) {
              console.log(response);
              return response.json();
            })
我创建的方法正在工作,但它在数组中添加了多个级别的数组。具体如下:

["["["["["["","1234"]","1233"]","1234"]","1234"]","1234"]"]
如何将其作为单级阵列?

1 个回复
最合适的回答,由SO网友:stemon 整理而成

有两件事需要改变

1-wishlistPost.metadata.wishlist_array 它是元数据,返回一个包含字符串的对象,而不是数组。

var wishlist_array = wishlistPost.metadata.wishlist_array[0]; //Get current string

          wishlist_array += postID + ","; //Concat new ID to the current string
2-JSON。如上所述,不需要stringify(wishlist\\u数组),wishlist\\u数组已经是字符串。正如Sally CJ所评论的,正文应如下所示:

body: JSON.stringify({
              metadata: { wishlist_array: wishlist_array }
            })

相关推荐

WP_Query, ACF field and array

首先,对不起,这个标题,我真的不知道如果不写blobtext,该如何命名这个问题!:)无论如何,我的问题是:我有一个自定义的帖子“Risorse”(英文:参考资料)。它只支持标题,所有其他参数都是使用ACF创建的自定义字段。其中之一是一种关系,我可以在其中选择一个或多个页面。例如,我可以创建一个资源并选择与两个页面的关系。在DB中,以这种方式保存a:2:{i:0;s:3:\"727\";i:1;s:3:\"729\";} 现在,当我加载例如727页时,我想列出与该页相关的所有资源。我正在尝试自定