You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP对接WordPress/WooCommerce REST API遇白屏,var_dump未执行求助

问题:WordPress插件调用第三方物流REST API出现白屏无输出

我正在尝试用PHP编写首个REST API对接,需要向物流公司发送运单数据并获取打印面单,对方已提供测试API凭证。编写的WordPress插件代码如下:

$url      = "https://mywebsite/endpoint/";
$username = "myusername";
$password = "mypassword";

$data = array( 
     'key1' => 'value1', 
     'key2' => 'value2'
);

$response = wp_remote_post( $url, array(
    'body'    => $data,
    'headers' => array(
        'Authorization' => 'Basic ' . base64_encode( $username . ':' . $password ),
        ),
    ) 
);

var_dump($response); // not being called

运行代码后出现白屏,无任何报错信息,最后一行的var_dump($response)未执行。不清楚是凭证错误、数据格式问题,还是请求未送达服务器?尝试过多种代码变体,甚至在WordPress外运行,均未解决问题。物流公司明确要求HTTP方法为POST,认证方式为Basic Authentication(用户名/密码),按要求编写却出现问题,求问原因。


排查与解决步骤

1. 开启WordPress错误调试

白屏的核心原因是WordPress默认屏蔽了致命错误输出,先开启调试模式获取具体错误信息:
在wp-config.php中添加以下代码:

define('WP_DEBUG', true);
define('WP_DEBUG_DISPLAY', true);

重新运行代码后,就能看到具体的错误提示(比如函数未加载、内存不足、语法错误等)。

2. 确保代码在WordPress环境初始化后执行

wp_remote_post是WordPress核心函数,直接在插件根文件裸写代码会因为核心未加载完成而报错。必须将代码挂在合适的钩子上执行,示例正确的插件结构:

<?php
/**
 * Plugin Name: Logistics Waybill Integration
 */

// 挂在admin_init钩子(后台执行)或init钩子(前台/后台都执行)
add_action('admin_init', 'send_logistics_waybill');

function send_logistics_waybill() {
    $url      = "https://mywebsite/endpoint/";
    $username = "myusername";
    $password = "mypassword";

    $data = array( 
         'key1' => 'value1', 
         'key2' => 'value2'
    );

    $response = wp_remote_post( $url, array(
        'body'    => $data,
        'headers' => array(
            'Authorization' => 'Basic ' . base64_encode( $username . ':' . $password ),
        ),
    ));

    var_dump($response);
    exit; // 临时添加,确保输出能在页面显示
}

3. 验证Basic Auth格式与有效性

手动生成认证字符串进行测试,避免编码逻辑问题:

// 单独执行这段代码,复制输出的字符串替换到请求头中
echo base64_encode("myusername:mypassword");

同时用curl命令直接测试第三方API,排除网络或凭证问题:

curl -X POST -u "myusername:mypassword" -d "key1=value1&key2=value2" https://mywebsite/endpoint/

如果curl能返回正常响应,说明问题出在WordPress代码执行环境;如果curl也失败,直接联系物流公司确认API地址、凭证或数据格式。

4. 调整请求超时与内存限制

默认超时时间可能过短,或服务器内存不足导致请求中断,可在wp_remote_post参数中增加配置:

$response = wp_remote_post( $url, array(
    'body'        => $data,
    'headers'     => array(
        'Authorization' => 'Basic ' . base64_encode( $username . ':' . $password ),
    ),
    'timeout'     => 30, // 设置30秒超时
    'httpversion' => '1.1',
    'sslverify'   => false, // 测试环境可临时关闭SSL验证(生产环境不建议)
));

内容的提问来源于stack exchange,提问作者Mister Woyng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 13:05:25