如何将WooCommerce REST API连接到WordPress多站点线上服务器并解决空白页问题
空白页排查及WooCommerce REST API正确连接方案
首先你遇到的空白页90%是PHP代码报错但错误提示被关闭导致的,按以下步骤排查即可:
- 第一步:开启PHP错误提示定位问题
在测试代码最顶部加入两行配置,打开错误显示:
error_reporting(E_ALL); ini_set('display_errors', 1);
重新运行页面就能看到具体报错信息,不需要盲猜。
- 第二步:确认引入官方PHP客户端依赖
你当前代码直接实例化Client类必然报错,因为没有引入WooCommerce官方REST API客户端:
优先用Composer安装依赖:composer require automattic/woocommerce
安装完成后在代码开头引入自动加载文件和命名空间:
require __DIR__ . '/vendor/autoload.php'; use Automattic\WooCommerce\Client;
- 第三步:校验WooCommerce后台API配置
- 进入WooCommerce后台→设置→高级→REST API,确认生成的密钥(ck、cs开头的两个字符串)权限设置为读写,权限不足会导致后续接口调用失败
- 确认站点固定链接未使用「朴素」模式,否则REST API路由无法正常解析
- 测试环境如果是HTTP站点或SSL证书无效,需要在客户端配置中加
'verify_ssl' => false参数,生产环境务必使用HTTPS
- 第四步:修改测试代码验证连通性
你当前仅打印客户端实例没有实际意义,要调用真实接口验证连接是否正常,完整测试代码参考:
<?php // 开启错误显示 error_reporting(E_ALL); ini_set('display_errors', 1); // 引入依赖 require __DIR__ . '/vendor/autoload.php'; use Automattic\WooCommerce\Client; // 初始化客户端 $woocommerce = new Client( 'https://myscustom.com/', // 替换为你的站点实际地址,末尾保留斜杠 'ck_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', // 替换为你的消费者密钥 'cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', // 替换为你的消费者密码 [ 'wp_api' => true, 'version' => 'wc/v3', // 测试环境SSL异常时可取消下一行注释 // 'verify_ssl' => false ] ); // 调用获取商品列表接口测试连通性 try { $product_list = $woocommerce->get('products', ['per_page' => 3]); print_r($product_list); } catch (Exception $e) { echo '连接失败,错误信息:' . $e->getMessage(); } ?>
WordPress多站点适配说明
可以正常适配,只需注意两个规则:
- 每个子站点需要单独在对应站点的WooCommerce后台生成独立的API密钥,主站密钥无法调用子站接口
- 初始化客户端时,第一个参数要填写对应子站点的完整访问地址:如果是子域名模式就填子域名(比如
https://store1.myscustom.com/),如果是子目录模式就填带目录的地址(比如https://myscustom.com/store1/)
内容的提问来源于stack exchange,提问作者tyrese humphreys
相关产品推荐
相关产品推荐

