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

时间:2019-08-22 14:13:12

标签: php wordpress api woocommerce

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

我尝试为端点添加一个内部回调函数,这将依次运行一个将产品添加到购物车的函数。尝试将此功能挂接到几个不同的地方,例如:init,wp,woocommerce_loaded,rest_api_init和wp_footer。

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

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

1 个答案:

答案 0 :(得分:1)

我通过使用以下代码解决了该问题:

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路由的名称空间。

我希望这对某人有帮助