Json 在shopify上创建元字段

Json 在shopify上创建元字段,json,shopify,liquid,Json,Shopify,Liquid,每次我的shopify客户在我的shopify商店订阅产品时,我都想创建元域,所以我得到了以下代码来创建元域,但不知道它在liquid主题上是如何工作的?有谁能告诉我需要在哪里编写以下代码才能使其正常工作 ‘POST’, ‘/admin/products/1328/metafields.json’, array(“metafield” => array(‘namespace’=>’inventory’, ‘key’=>’warehouse’, ‘value’=>"som

每次我的shopify客户在我的shopify商店订阅产品时,我都想创建元域,所以我得到了以下代码来创建元域,但不知道它在liquid主题上是如何工作的?有谁能告诉我需要在哪里编写以下代码才能使其正常工作

‘POST’, ‘/admin/products/1328/metafields.json’, array(“metafield” => 
array(‘namespace’=>’inventory’, ‘key’=>’warehouse’, ‘value’=>"some text here",   ‘value_type’=>’string’)));

如何在liquid模板页面中生成上述代码,以使用shopify api创建元字段?

纯liquid由您商店的访问者“交互”,不允许对shopify api执行任何操作。您需要有一个Oauth open会话才能发布/读取存储数据。

对于您的示例,您可以这样引用元字段

{{product.metafields.inventory.warehouse}

那就说明


“此处的某些文本”

不能在液体中创建元字段。如果要创建元字段,必须使用admin API/graphQL API


Liquid只允许您将现有数据“打印”到模板中。

为此,您需要创建一个控制器和方法,该控制器和方法将接收AJAX请求并调用Shopify API

在产品订阅按钮上创建单击事件。 单击事件将如下所示:

let url = 'https://your_host.com/your_contoller/your_method?shop=your_shop_domain';
let postData = { product_id: "your_product_id" };
$.ajax({
  type: 'post',
  url: url,
  data: postData,
  dataType: 'json',
  complete: (res) => {
      console.log(res); // response from your_method
  }
});
在控制器方法中,必须将Shopify客户端用作phpish/Shopify或任何其他。 在客户端使用api_密钥、访问应用程序或私人应用程序的_令牌的情况下,您可以发出此类请求:

POST /admin/api/2020-10/products/PRODUCT_ID/metafields.json
{
  "metafield": {
    "namespace": "inventory",
    "key": "warehouse",
    "value": 25,
    "value_type": "integer"
  }
}
等你拿到结果后

但是,如果您希望根据客户的请求创建元字段,最好将controller方法包装在队列中并使用队列,因为如果您不使用队列,则有可能落入Shopify REST API的限制范围内


创建元字段后,您可以使用Richard提供的代码从liquid获取值。

我找到了另一个示例,并尝试了product=shopifiAPI::product.find(148362461)product.add_元字段(shopifiAPI::metafield.new)({:description=>'Developer of the Site',:namespace=>'chargify',:key=>'customer',:value=>'Metlo',:value_type=>'string'})它也不起作用,我需要知道如何在shopify的客户账户页面上创建/更新/删除元域?我想与每个客户互动,使用shopify发布/查看数据,特别是元域,所以我想知道我的客户何时进入会员页面,通过chargify订阅任何计划,然后返回我们的网站网站成功订阅后,一旦订阅,我想在shopify网站上创建元字段,以便将来检查登录的客户是否已订阅。您能告诉我如何使用Oauth open session来完成此操作吗?