如何在WordPress中禁用Rest API?- Webempresa

作者:API传播员 · 2026-01-05 · 阅读时间:5分钟

从WordPress的最新版本来看,REST API 是一个强大的工具,但如果您的网站并不需要使用这些功能,那么禁用它可能是一个明智的选择。本文将详细介绍如何在WordPress中禁用REST API,以及如何仅为站点管理员启用它。


什么是WordPress中的REST API?

在WordPress中,REST API(应用程序编程接口)是一组规则和协议,允许不同的应用程序或系统以结构化的方式相互通信和共享数据。通过REST API,外部应用程序(如移动应用程序或外部网站)可以访问WordPress网站的数据和功能。

REST API 提供了一组端点,可以通过这些端点执行HTTP请求,例如获取、创建、更新或删除WordPress中的数据。常见的操作包括获取文章列表、创建新文章、获取用户详细信息以及更新页面等。这些操作通过HTTP请求和JSON格式的数据交换完成。

REST API 对于需要将WordPress与其他应用程序或服务集成的场景非常有用,因为它提供了一种标准化的通信和数据访问方式。这使得开发者能够创建自定义应用程序,从不同平台访问WordPress数据,并扩展CMS的功能。


如何检查REST API是否启用?

验证WordPress网站的REST API是否处于活动状态非常简单,只需按照以下步骤操作:

  1. 打开浏览器,访问您的WordPress网站。
  2. 在主URL后添加 /wp-json/,例如:https://www.yoursite.com/wp-json/
  3. 如果REST API启用,您将看到JSON格式的响应,其中包含可用端点和资源的信息。
  4. 如果返回404错误或空白页面,则REST API可能已被禁用或不可用。

需要注意的是,自WordPress 4.7版本起,REST API 已成为其核心功能的一部分,默认情况下是启用的。除非明确禁用,否则它应该始终处于活动状态。


仅为管理员启用REST API

如果您希望限制REST API的访问权限,仅允许管理员使用,可以通过以下方法实现:

方法一:通过代码实现

将以下代码添加到您主题的 functions.php 文件中(建议使用子主题以避免更新覆盖):

// 仅允许管理员访问REST API
function restrict_rest_api_to_admins() {
  if ( ! current_user_can( 'administrator' ) ) {
    add_filter( 'rest_authentication_errors', function( $result ) {
      return new WP_Error( 'rest_api_admin_only', '访问被拒绝,仅管理员可以访问REST API。', array( 'status' => rest_authorization_required_code() ) );
    });
  }
}
add_action( 'rest_api_init', 'restrict_rest_api_to_admins' );

代码解析:

  1. 定义了 restrict_rest_api_to_admins 函数,并在REST API初始化时执行。
  2. 使用 current_user_can('administrator') 检查当前用户是否为管理员。
  3. 如果用户不是管理员,则通过 add_filter 添加过滤器,返回身份验证错误,拒绝访问REST API。

方法二:使用插件

您还可以使用插件来实现相同的功能,例如 Code Snippets。该插件允许您管理自定义代码,而无需直接修改主题文件。


如何禁用REST API?

如果您决定完全禁用REST API,可以选择以下两种方法:

方法一:通过插件

Disable WP Rest API 是一个轻量级插件,专为禁用REST API设计。它的主要特点包括:

  • 禁用未登录用户的REST API访问:防止未注册用户访问REST API,保护数据安全。
  • 移除REST相关的HTTP头信息:进一步隐藏API的存在。
  • 移除HTML头部中的REST链接:防止意外访问API。
  • 即插即用:安装并激活后无需额外配置。

在WordPress 4.7及更高版本中,该插件会完全禁用未登录用户的REST API访问,而已登录用户仍可正常使用。

方法二:通过代码

将以下代码添加到 functions.php 文件中,以完全禁用REST API:

add_filter('rest_authentication_errors', 'disable_rest_api', 99);

function disable_rest_api($access) {
    return new WP_Error('rest_disabled', __('REST API 已在此站点禁用。'), array('status' => 403));
}

代码解析:

  1. 使用 add_filterdisable_rest_api 函数挂载到 rest_authentication_errors 钩子。
  2. 当发生身份验证错误时,返回自定义错误消息,指示REST API已禁用,并返回403状态码。

注意事项

禁用REST API可能会影响某些依赖其功能的插件或主题的正常运行。在禁用之前,请确保已充分评估其可能的影响,并备份您的网站。


结论

禁用WordPress的REST API可以显著提高网站的安全性,减少暴力攻击的风险,并API可能会限制某些功能的使用,因此在实施前需仔细评估其影响。

通过本文介绍的方法,您可以根据需求选择完全禁用REST API,或仅为管理员启用,从而更好地控制网站的安全性和功能性。

原文链接: https://www.webempresa.com/blog/como-desactivar-rest-api-en-wordpress.html