【问题标题】:How can I use the Woocommerce REST API with plain permalinks?如何使用带有普通永久链接的 Woocommerce REST API?
【发布时间】:2019-10-30 07:01:30
【问题描述】:

我想向 Woocommerce REST API 发出请求以检查状态和更新产品。我的 Wordpress 安装使用普通的永久链接,因为前端是内置在 React 中的,它呈现在静态主页上。因此,我需要将所有查询传递到主页,以便我的 React 路由器可以处理请求(如果我将永久链接设置为漂亮,wordpress 路由器将引导任何不是主页的请求并且它不会到达 React 路由器) .

我正在使用 ssl,并设置了消费者密钥和秘密。如果我将永久链接设置为漂亮,我可以成功发出请求。但是,我需要进行这样的查询:

https://example.com/?rest_route=/wc/v3/products

我尝试将消费者密钥和密钥作为额外参数传递:

https://example.com/?rest_route=/wc/v3/products&consumer_key=xxx&consumer_secret=xxx

但这不起作用。我还尝试在我的手动 curl 请求中将它们作为标头传递给 php。我还尝试从命令行使用 curl 发出请求。当我使用文档中概述的方法使用漂亮的永久链接时,所有这些方法都有效,但是使用永久链接到普通链接时,它们都会导致 401 响应,说明我未通过身份验证。

有什么办法可以解决这个问题,还是我只需要制作自定义端点?

【问题讨论】:

    标签: permalinks woocommerce-rest-api


    【解决方案1】:

    文档 (woocommerce.github.io) 说:

    要使用最新版本的 REST API,您必须使用:

    ...

    默认永久链接不起作用

    (强调他们的)

    对于“旧版 API”,以下工作:

    mywebsite.com/index.php?wc-api-version=1&wc-api-route=/products/1234

    发件人:

    add_rewrite_rule( '^wc-api/v([1-3]{1})(.*)?', 'index.php?wc-api-version=$matches[1]&wc-api-route=$matches[2]', 'top' );

    class-wc-legacy-api.php:80

    WC_Legacy_API::add_endpoint()

    如果你愿意,你可以注册你自己的重写规则,并在其中执行如下操作:

    $rest_server = rest_get_server();
    
    $request = new WP_REST_Request( 'GET', '/wc/v3/products' );
    
    $response = rest_do_request( $request );
    
    return...
    

    【讨论】:

      猜你喜欢
      • 2017-03-19
      • 2019-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-10
      • 1970-01-01
      相关资源
      最近更新 更多