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

WordPress固定链接为Plain时,创建可调用自定义REST API端点的方案

Plain固定链接下自定义REST API端点404的解决办法

问题根源

用Plain固定链接时,WordPress靠rest_route参数解析API路由,但你的自定义端点注册细节没适配这种模式,导致路由匹配失败出现404。

修复后的完整代码

直接替换你原来的代码,调整后就能在Plain模式下正常工作:

function create_custom_endpoint() {
    register_rest_route(
        'wp/v2',
        'custom-ep', // 去掉路由开头的斜杠,适配Plain模式解析逻辑
        array(
            'methods' => WP_REST_Server::READABLE, // 用官方常量替代字符串,更稳妥
            'callback' => 'get_response',
            'permission_callback' => '__return_true', // 公开访问就用这个,要权限的话换成is_user_logged_in之类的
        )
    );
}

function get_response() {
    // 这里改成你需要的用户元数据返回逻辑
    $current_user = wp_get_current_user();
    if ($current_user->ID === 0) {
        return new WP_Error('not_logged_in', '用户未登录', array('status' => 401));
    }
    // 获取并整理用户元数据
    $user_meta = get_user_meta($current_user->ID);
    foreach ($user_meta as $key => $value) {
        if (is_array($value) && count($value) === 1) {
            $user_meta[$key] = $value[0];
        }
    }
    return rest_ensure_response($user_meta);
}

add_action('rest_api_init', 'create_custom_endpoint', 10);

关键调整说明

  • 路由格式修正:把/custom-ep改成custom-ep,避免Plain模式下路由解析时的斜杠冲突,这是解决404的核心。
  • 规范常量使用:用WP_REST_Server::READABLE代替'GET',符合WordPress开发规范,减少出错概率。
  • 权限控制:加了permission_callback字段,确保端点安全——公开访问用__return_true,需要登录就换成'is_user_logged_in'。
  • 标准响应格式:用rest_ensure_response()包装返回数据,同时处理未登录场景返回标准错误,符合REST API规范。

测试调用

部署代码后,用这个URL访问(替换成你的域名):

domain-name.com/?rest_route=/wp/v2/custom-ep

如果要指定用户ID(需权限允许),可以加参数:

domain-name.com/?rest_route=/wp/v2/custom-ep&user_id=123

(要获取这个参数的话,把回调函数改成function get_response($request) { $user_id = $request->get_param('user_id'); ... })

额外排查点

如果还是404,检查这几点:

  • 代码有没有语法错误,确保放在主题functions.php或自定义插件里。
  • 清空网站缓存(如果用了缓存插件)。
  • 检查安全插件(比如Wordfence)是否拦截了请求,把自定义端点加入白名单。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 03:27:28