跳到主要内容

可扩展的 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_callbackschema_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_callbackschema_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,
)
);