跳转到主要内容

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