通过api调用将产品添加到购物车

我已经设置了 wordpress REST api 来创建一个端点来监听特定第三方服务的调用。此第三方服务将发送包含产品数据的 POST 请求。此数据需要可用于 woocommerce,以便它可以将产品添加到购物车。问题是我无法访问将返回 woocommerce 实例的 WC() 函数。第三方服务需要一个 json 响应,它可以是任何东西,只要它是 json。收到响应后,它将用户重定向到购物车。

我尝试在端点的回调函数中添加一个内部回调函数,该函数将依次运行一个将产品添加到购物车的函数。尝试将此函数连接到几个不同的点,例如:init、wp、woocommerce_loaded、rest_api_init 和 wp_footer。

我还尝试发送带有参数的 cURL get 请求,例如 ?add-to-cart=".$request->get_param('productId') 这也不起作用。

我无法发布第三方服务,但 wp rest api 端点只是一个监听 POST 请求的普通端点。


素胚勾勒不出你
浏览 204回答 1
1回答

RISEBY

我使用以下代码解决了这个问题:add_filter( 'woocommerce_is_rest_api_request', [ $this, 'simulate_as_not_rest' ] );/*** We have to tell WC that this should not be handled as a REST request.* Otherwise we can't use the product loop template contents properly.* Since WooCommerce 3.6** @param bool $is_rest_api_request* @return bool*/public function simulate_as_not_rest( $is_rest_api_request ) {if ( empty( $_SERVER['REQUEST_URI'] ) ) {        return $is_rest_api_request;}// Bail early if this is not our request.if ( false === strpos( $_SERVER['REQUEST_URI'], $this->namespace ) ) {    return $is_rest_api_request;}return false;}我将命名空间设置为等于 API 路由的命名空间。我希望这可以帮助别人
打开App,查看更多内容
随时随地看视频慕课网APP