WooCommerce REST API错误:无效URL,未找到WC API


WooCommerce REST API error: Invalid URL, no WC API found

我试图开始与WooCommerce REST API客户端库,但不断得到这个错误:

无效的URL,没有在http://[myy-store].com/wc-api/v2/——找到WC API确保你的商店URL是正确的,漂亮的永久链接是启用的。

漂亮的永久链接是启用和设置张贴名称,根据这个线程。通过浏览器手动访问URL会得到一些WooCommerce设置的JSON输出,这就是为什么我假设商店URL是正确的。(这和我正在研究的领域一样。)我还尝试插入新的消费者和密钥,但没有帮助。

对代码进行了一些研究,使我想到了class-wc-api-client.php。

$index = @file_get_contents( $this->api_url );
// check for HTTP 404 response (file_get_contents() returns false when encountering 404)
// this usually means:
// 1) the store URL is not correct (missing sub-directory path, etc)
// 2) pretty permalinks are disabled
if ( false === $index ) {
    throw new WC_API_Client_Exception( sprintf( 'Invalid URL, no WC API found at %s -- ensure your store URL is correct and pretty permalinks are enabled.', $this->api_url ), 404 );

$index确实等于false,这意味着file_get_contents得到404响应。在商店目录中创建/wc-api/v2/目录没有帮助。

我不知道为什么file_get_contents得到404响应,而浏览页面将显示一个非空JSON字符串。我觉得我错过了一些基本的东西。

任何帮助都是感激的!


编辑:找到解决方案了!今天我又遇到了这个问题,并对JSON返回FALSE的file_get_contents()进行了一些研究。这条线索让我找到了正确的方向。在PHP.ini中设置allow_url_fopen = On可以解决这个问题。如果有人遇到同样的问题,我想知道一下会很有用。

我也遇到过类似的问题。我的问题是由iTheme安全中的一个设置引起的。在禁用用户下->启用HackRepair.com的黑名单功能。如果您启用了该列表,那么itheme将在.htaccess中保留允许的用户代理列表。当您使用php的file_get_contents时,没有用户代理,因此脚本最终会被阻塞。

如果其他人对此有问题,我建议查看您的。htaccess,看看是否有任何可疑之处。