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

JetEngine对接WordPress:API Item Path识别失败与JSON格式适配问题

解决方案:JetEngine对接不合规JSON API的处理方法

1. 能否跳转至合规JSON的外部链接?

JetEngine不支持自动跳转操作,但如果存在现成的合规JSON接口,直接把该接口的URL替换到JetEngine的API配置项里即可,无需额外跳转设置。

2. 如何格式化JSON让JetEngine读取?

最直接的方式是通过WordPress钩子修改API返回内容,把原JSON转换成JetEngine能识别的结构:

  • 在主题的functions.php文件或自定义插件中添加以下代码,通过jet-engine/listings/source/request/response钩子拦截并处理API响应:
add_filter( 'jet-engine/listings/source/request/response', function( $response, $request_args, $source ) {
    // 仅针对目标API源修改,替换成你的API源名称
    if ( '你的API源名称' !== $source->get_name() ) {
        return $response;
    }
    // 解析原API返回的JSON
    $data = json_decode( $response, true );
    // 提取JetEngine需要的数组结构(示例为从Veiculos->Veiculo提取)
    if ( isset( $data['Veiculos']['Veiculo'] ) && is_array( $data['Veiculos']['Veiculo'] ) ) {
        $response = json_encode( $data['Veiculos']['Veiculo'] );
    }
    return $response;
}, 10, 3 );
  • 也可以用外部脚本(如Node.js、PHP脚本)预先抓取并格式化原API数据,但用WordPress钩子的方式更贴合现有环境,无需额外部署。

3. 能否转发API并格式化后返回至新端点?

完全可以,你可以在WordPress中创建一个自定义REST API端点,在该端点内请求原API、格式化数据后返回,再让JetEngine调用这个自定义端点:

  • 同样在functions.php或自定义插件中添加代码:
add_action( 'rest_api_init', function () {
    // 注册自定义API路由
    register_rest_route( 'custom/v1', '/formatted-veiculos', array(
        'methods' => 'GET',
        'callback' => 'custom_formatted_veiculos_api',
        'permission_callback' => '__return_true', // 可根据需求调整权限控制
    ) );
} );

function custom_formatted_veiculos_api( $request ) {
    // 替换为原API的实际URL
    $original_api_url = 'https://原API地址.com/xxx';
    $response = wp_remote_get( $original_api_url );
    
    if ( is_wp_error( $response ) ) {
        return new WP_Error( 'api_fetch_fail', '无法获取原API数据', array( 'status' => 500 ) );
    }
    
    $body = wp_remote_retrieve_body( $response );
    $data = json_decode( $body, true );
    
    // 格式化数据为JetEngine需要的结构
    $formatted_data = isset( $data['Veiculos']['Veiculo'] ) ? $data['Veiculos']['Veiculo'] : array();
    
    return rest_ensure_response( $formatted_data );
}

完成后,JetEngine的API配置中填写https://你的域名/wp-json/custom/v1/formatted-veiculos,Item Path直接填/即可,因为返回的已经是标准的数据数组。

内容的提问来源于stack exchange,提问作者Rodolfo Candido Ochoa Dodo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 05:42:48