WP Rest API自定义端点返回NULL问题求助
这种情况我碰过好多次,大概率是回调函数里的字段获取逻辑有问题,或是路由注册的细节没做到位。咱们一步步排查修复:
1. 先确认路由注册的正确性
首先要保证register_rest_route的参数完全合规,尤其是命名空间、请求方法和权限回调这几个关键点:
add_action('rest_api_init', function () { register_rest_route( 'custom/v1', // 自定义命名空间,避免和默认API冲突 '/trimmed-posts/', // 端点路径 array( 'methods' => WP_REST_Server::READABLE, // 等价于'GET',更规范的写法 'callback' => 'get_trimmed_posts', 'permission_callback' => '__return_true', // 临时开放权限排查问题,上线后要替换成合适的权限逻辑(比如'is_user_logged_in') ) ); });
注意:如果省略permission_callback,WordPress会默认要求用户登录,可能导致返回权限错误或者空数据,先暂时用__return_true排除权限问题。
2. 修复回调函数的字段获取逻辑
返回NULL最常见的原因是直接访问Post对象的原始属性(比如$post->title),而没有用WordPress的官方函数来获取数据。下面是一个标准的回调示例,假设你需要标题、特色图URL、文章链接三个字段:
function get_trimmed_posts($request) { // 处理请求参数(比如每页数量) $per_page = $request->get_param('per_page') ?: 10; // 查询已发布的文章 $args = array( 'post_type' => 'post', 'posts_per_page' => $per_page, 'post_status' => 'publish', 'orderby' => 'date', 'order' => 'DESC' ); $posts = get_posts($args); $trimmed_data = array(); foreach ($posts as $post) { // 初始化Post数据,确保后续函数能正确获取字段 setup_postdata($post); // 安全获取特色图URL(处理无特色图的情况) $featured_img = get_the_post_thumbnail_url($post->ID, 'medium') ?: ''; // 组装需要的字段 $trimmed_data[] = array( 'title' => get_the_title($post->ID), 'featured_image' => $featured_img, 'permalink' => get_permalink($post->ID) ); } // 重置Post数据,避免干扰后续主题/插件逻辑 wp_reset_postdata(); // 用WordPress官方函数包装返回值,自动处理JSON格式和HTTP头 return rest_ensure_response($trimmed_data); }
常见错误点:
- 直接用
$post->title而不是get_the_title():Post对象的原始属性存储的是未过滤的数据库值,可能包含短代码或未解析的内容,且在未初始化Post数据时可能为空 - 用
$post->featured_media直接作为图片URL:这其实是特色图的附件ID,需要用get_the_post_thumbnail_url()转成URL - 忘记调用
setup_postdata()或wp_reset_postdata():导致后续获取字段的函数无法正常工作
3. 排查错误日志和冲突
如果上面的调整后还是返回NULL,可以开启调试模式找问题:
在wp-config.php中添加以下代码:
define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); define('WP_DEBUG_DISPLAY', false);
访问你的自定义端点后,查看wp-content/debug.log文件,里面会记录具体的错误(比如未定义的函数、数据库查询错误等)。
另外,暂时禁用所有插件、切换到默认主题(比如Twenty Twenty-Four)测试,排查是否有其他代码干扰了REST API的返回值。
内容的提问来源于stack exchange,提问作者Dirty Bird Design
相关产品推荐
相关产品推荐

