可扩展的 API 接口
Store API 的某些接口可以通过名为 ExtendSchema 的类进行扩展。 这允许您自定义 Store API 返回的数据(包括结构化数据),以便您的应用程序或插件可以消费这些数据。
有关扩展 Store API 的更多信息,您可能还对以下内容感兴趣:
以下是可以使用 ExtendSchema 进行扩展的可用接口列表,以及一些示例用例。
产品
主要的 wc/store/products 接口可以通过 ExtendSchema 进行扩展。 数据通过每个 product 在响应数组中的 extensions 键提供。
可以使用 ProductSchema::IDENTIFIER 键来扩展此接口。 对于此接口,您的 data_callback 回调函数会传递 $product 作为参数。 您的 schema_callback 函数不传递任何其他参数;所有产品应共享相同的结构化数据。
用例
此接口适用于添加有关单个产品的附加数据。 这可能是一些元数据、额外的定价,或任何其他支持产品页面上自定义组件的数据。
示例
woocommerce_store_api_register_endpoint_data(
array(
'endpoint' => ProductSchema::IDENTIFIER,
'namespace' => 'my_plugin_namespace',
'data_callback' => function( $product ) {
return array(
'my_meta_data' => get_post_meta( $product->get_id(), 'my_meta_data', true ),
);
},
'schema_callback' => function() {
return array(
'properties' => array(
'my_meta_data' => array(
'type' => 'string',
),
),
);
},
'schema_type' => ARRAY_A,
)
);
购物车
主要的 wc/store/cart 接口可以通过 ExtendSchema 进行扩展。 数据通过响应中的 extensions 键提供。
可以使用 CartSchema::IDENTIFIER 键来扩展此接口。 对于此接口,您的 data_callback 和 schema_callback 函数不传递任何其他参数。
用例
此接口适用于向购物车页面添加附加数据,例如,有关购物车中商品的额外数据,或支持购物车页面上显示的自定义组件所需的一切。
示例
woocommerce_store_api_register_endpoint_data(
array(
'endpoint' => CartSchema::IDENTIFIER,
'namespace' => 'my_plugin_namespace',
'data_callback' => function() {
return array(
'foo' => 'bar',
);
},
'schema_callback' => function() {
return array(
'properties' => array(
'foo' => array(
'type' => 'string',
),
),
);
},
'schema_type' => ARRAY_A,
)
);
购物车商品
wc/store/cart/items 接口,该接口也可用作 wc/store/cart 内部的 items 键。 数据将包含在 items 数组的每个商品中。
该接口可以通过 CartItemSchema::IDENTIFIER 键进行扩展。 对于此接口,您的 data_callback 回调函数将接收 $cart_item 作为参数。 您的 schema_callback 函数不接收任何其他参数;所有购物车商品应使用相同的结构化数据。
用途
此接口适用于添加有关单个购物车商品的附加数据。 这可能是一些元数据、附加价格,或任何其他支持购物车页面上自定义组件或扩展的功能。
示例
woocommerce_store_api_register_endpoint_data(
array(
'endpoint' => CartItemSchema::IDENTIFIER,
'namespace' => 'my_plugin_namespace',
'data_callback' => function( $cart_item ) {
$product = $cart_item['data'];
return array(
'my_meta_data' => get_post_meta( $product->get_id(), 'my_meta_data', true ),
);
},
'schema_callback' => function() {
return array(
'properties' => array(
'my_meta_data' => array(
'type' => 'string',
),
),
);
},
'schema_type' => ARRAY_A,
)
);
结账
wc/store/checkout 接口可以通过 ExtendSchema 进行扩展。 响应中的 extensions 键包含可用的附加数据。
该接口可以通过 CheckoutSchema::IDENTIFIER 键进行扩展。 对于此接口,您的 data_callback 和 schema_callback 函数不接收任何其他参数。
用途
此接口适用于向结账页面添加附加数据,例如自定义支付方法,该方法需要从用户或服务器收集额外的数据。
⚠ 重要:不要在此接口中泄露任何敏感数据,因为它对公众开放。 这包括用于支付服务的私钥。
示例
woocommerce_store_api_register_endpoint_data(
array(
'endpoint' => CheckoutSchema::IDENTIFIER,
'namespace' => 'my_plugin_namespace',
'data_callback' => function() {
return array(
'foo' => 'bar',
);
},
'schema_callback' => function() {
return array(
'properties' => array(
'foo' => array(
'type' => 'string',
),
),
);
},
'schema_type' => ARRAY_A,
)
);