为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
素胚勾勒不出你 2021-12-03 14:36:07
我已经设置了 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 请求的普通端点。
查看完整描述

1 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

我使用以下代码解决了这个问题:


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


我希望这可以帮助别人


查看完整回答
反对 回复 2021-12-03
  • 1 回答
  • 0 关注
  • 203 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信