亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通過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 關注
  • 226 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號