如何为特定WordPress REST API端点设置专属登录权限?
为特定WordPress REST API端点设置专属登录权限的简便方法
方法1:用代码自定义权限回调
WordPress REST API的每个端点都支持权限回调,直接修改或添加回调就能精准限制访问,这是不用插件的最灵活方式。
比如要限制wp/v2/posts的发布权限(只让编辑及以上角色访问),可以在主题的functions.php里加这段代码:
add_filter( 'rest_posts_collection_params', 'custom_rest_posts_permissions', 10, 1 ); function custom_rest_posts_permissions( $params ) { // 检查当前用户是否有编辑文章的权限 if ( ! current_user_can( 'edit_posts' ) ) { return new WP_Error( 'rest_forbidden', '你没有权限访问此端点', array( 'status' => 403 ) ); } return $params; }
要是针对用户相关端点(比如wp/v2/users),想限制仅管理员能访问,就用这段:
add_filter( 'rest_user_query', 'custom_rest_users_permissions', 10, 2 ); function custom_rest_users_permissions( $prepared_args, $request ) { if ( ! current_user_can( 'manage_options' ) ) { return new WP_Error( 'rest_forbidden', '你没有权限查看用户数据', array( 'status' => 403 ) ); } return $prepared_args; }
提示:current_user_can()里的权限参数可以按需替换,比如publish_posts(发布文章)、edit_users(编辑用户)等,对应不同角色的权限。
方法2:用权限管理插件搞定
不想写代码的话,用成熟的权限插件是更省心的选择,比如Members插件:
- 安装激活后,进入「Members」→「角色」页面,编辑你要限制的角色(比如订阅者)
- 在权限列表里找到「REST API」相关选项,取消勾选不需要的权限(比如「查看REST API用户数据」「通过REST API发布文章」)
- 保存后,该角色的用户就碰不了对应的REST API端点了
这种方式全可视化操作,不用写一行代码,适合非开发人员。
内容的提问来源于stack exchange,提问作者Owen
相关产品推荐
相关产品推荐

