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

WordPress函数json_encode输出末尾出现NULL的问题求助

排查与解决JSON末尾多出null的问题

我来帮你分析下这个问题,大概率是脚本没有及时终止导致的,结合WordPress的运行机制,给你几个排查和解决思路:

最直接的解决方案:终止脚本执行

在WordPress中,如果你是通过AJAX或者类似场景调用这个函数,输出JSON后必须终止脚本,否则WordPress会继续执行后续的核心代码,可能输出额外的内容(比如你看到的null)。

修改你的函数,在echo $json之后添加wp_die()(WordPress推荐的终止方法,兼容AJAX等场景):

function see_get_basic_accuracy() { 
    global $wpdb; 
    $userid = apply_filters( 'determine_current_user', false ); 
    wp_set_current_user( $userid ); 
    $userID = get_current_user_id(); 

    // 重要:修复SQL注入风险!用wpdb->prepare转义参数
    $sql = $wpdb->prepare(
        "SELECT * FROM basic_accuracy_table WHERE user_id = %d ORDER BY recent_session ASC LIMIT 1;",
        $userID
    ); 

    $results = $wpdb->get_results($sql); 
    $json = json_encode($results); 
    echo $json; 
    wp_die(); // 关键:立刻终止脚本,防止后续输出
}

其他排查方向

如果添加wp_die()后还是有null,可以排查以下几点:

  • 检查第三方代码干扰:暂时禁用所有插件,切换到WordPress默认主题(比如Twenty Twenty-Four),测试是否还出现null。如果消失了,就逐个重新启用插件/主题,找到触发额外输出的代码。
  • 检查文件多余输出:查看你存放这个函数的PHP文件,开头/结尾的PHP标签之外是否有空格、换行或者其他字符?这些可能会被输出,但这里是null,可能性较低,但值得排查。
  • 查看数据库查询错误:虽然你说返回了预期JSON,但可以临时添加错误日志排查SQL问题:
    $results = $wpdb->get_results($sql); 
    error_log( $wpdb->last_error ); // 会把SQL错误写入服务器日志
    
  • 检查钩子冲突:是否有其他代码通过shutdown、wp_footer等钩子输出了null?可以用remove_all_actions('shutdown')临时测试(仅限排查,不要留到生产环境)。

另外提醒下:你的原代码直接把$userID拼进SQL语句,存在SQL注入风险,上面的修改已经用$wpdb->prepare修复了这个问题,一定要保留这个写法!

内容的提问来源于stack exchange,提问作者Quint Rahaman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:14:44