如何移除WordPress REST API返回结果中多余的JavaScript代码
问题产生原因
你遇到的额外JavaScript代码来自你站点安装的Alfalah银行WooCommerce支付网关插件。该插件在开发时没有做请求场景校验,无论是普通站点页面请求,还是WordPress REST API请求,都会全局注入这段用于给插件后台配置表单添加必填属性的校验脚本,最终破坏了API返回的JSON结构。
解决方案
- 第一步先验证问题来源:临时禁用该WooCommerce支付网关插件,再次调用API确认返回是否恢复正常,确认后再选择以下方案修复。
- 方案1(推荐):修改插件的脚本注入逻辑
找到该插件中输出这段JS代码的对应位置,包裹一层场景判断,仅在插件的后台配置页输出脚本,排除API请求:
// 仅在WooCommerce支付设置后台页输出,且跳过REST API请求场景 if ( ! defined( 'REST_REQUEST' ) && is_admin() && isset( $_GET['page'], $_GET['tab'] ) && $_GET['page'] === 'wc-settings' && $_GET['tab'] === 'checkout' ) { // 把插件原有输出这段JS的代码放在该判断条件内即可 }
- 方案2(无需修改插件代码的兼容方案)
在站点当前使用主题的functions.php文件中添加如下代码,在API请求初始化阶段自动移除插件挂载的脚本输出动作:
add_action( 'rest_api_init', function () { // 请将下方示例的钩子名、函数名替换为该插件实际挂载输出JS的对应名称 remove_action( 'admin_head', '插件输出JS的回调函数名' ); remove_action( 'wp_head', '插件输出JS的回调函数名' ); }, 999 );
注意:修改插件或主题代码前请提前备份站点相关文件,避免操作失误导致站点功能异常。
内容的提问来源于stack exchange,提问作者Rai Rizwan
相关产品推荐
相关产品推荐

