WordPress自定义REST路由回调如何拆分代码到不同函数并返回响应
问题解决方法
问题根因
- 主回调函数中调用子函数时仅执行了子函数逻辑,没有将子函数返回的
WP_REST_Response对象作为主函数的返回值返回,子函数执行完成后代码会继续向下执行,最终返回了主函数末尾定义的默认响应。 - 所有
return语句后的die()代码永远不会执行,属于无效冗余代码。
修复步骤
- 先简化子函数,删除无效的
die()代码:
function another_function_1( $request ) { // // 业务处理逻辑 // return new WP_REST_Response('Done from 1, bro!', 200); } function another_function_2( $request ) { // // 业务处理逻辑 // return new WP_REST_Response('Done from 2, bro!', 200); }
- 修改主回调函数,在调用子函数前增加
return关键字,直接将子函数的返回值作为主函数的返回结果:
function handle_webhook( $request ) { // 此处提前给$something赋值你的判断条件 if ($something) { return another_function_1( $request ); } else { return another_function_2( $request ); } // 原有末尾的默认返回已经永远不会触发,可以直接删除 }
补充说明
WordPress REST路由的回调规范为直接返回响应对象即可,框架会自动完成后续的响应输出处理,不需要手动调用die()/exit()终止程序,否则可能破坏REST API的响应结构,引发额外的格式问题。
内容的提问来源于stack exchange,提问作者Arkej
相关产品推荐
相关产品推荐

