将自定义路线添加到WordPress REST API
WordPress REST API自定义路由:扩展API功能的强大工具
本文探讨WordPress REST API的自定义路由功能,展示如何创建定制化的API解决方案。 与仅使用默认路由相比,自定义路由提供了更精细的控制和扩展性。
核心要点:
- WordPress REST API具有高度可定制性,允许开发者添加自定义路由和端点,满足特定需求。
- 使用
register_rest_route()
函数,结合rest_api_init
动作,即可添加自定义路由。 需指定命名空间、路由路径以及包含方法、回调函数和权限信息的端点数组。 - 端点可定义具体的HTTP方法(GET、POST、PUT、DELETE),并指定其接受的数据字段、默认值、清理和验证规则。
- 端点中的权限回调函数确保只有授权请求才能访问路由,通过检查用户权限或自定义授权方法来增强安全性。
- 自定义路由和端点提供了一种更结构化、更安全的方式来扩展WordPress REST API,精确控制数据输入和输出,成为开发者增强WordPress项目的强大工具。
超越默认路由:构建无限可能
关于WordPress REST API的大部分讨论都集中在查询默认路由上,这使得它看起来像一个单一的API,例如Twitter API。 然而,WordPress REST API并非单一API,而是数百万个高度可定制的API的集合,本身也可以作为构建API的工具。 默认路由是众多站点需求的折中方案,并非所有任务都能仅靠默认路由完成。
就像WordPress不仅仅是全局WP_Query对象一样,REST API也不仅仅是默认API。 只使用默认路由就像在传统的WordPress项目中从不创建自己的WP_Query对象,或覆盖pre_get_posts
中的默认查询一样。虽然可行,但并非所有工作都能仅靠默认的WordPress URL路由来完成。
REST API同样如此。 REST API的联合首席开发者Ryan McCue曾提到,该项目的第二版分为两部分:默认路由和创建RESTful API的基础架构。默认路由为创建自定义路由提供了很好的示例。
添加路由:register_rest_route()
函数
REST API第二版引入了一个名为register_rest_route()
的新函数,允许向REST API添加路由并传入端点数组。 对于每个端点,不仅要提供处理请求的回调函数,还可以定义查询中所需字段,包括默认值、清理和验证回调函数以及单独的权限回调函数。
本文将重点介绍回调函数、字段参数和权限检查这三个方面,它们展示了API的架构,并通过一个示例演示如何创建一个自定义路由,其中包含两个端点,用于显示由Easy Digital Downloads (EDD)驱动的电子商务网站中的产品信息。
设置路由:命名空间和路由路径
定义自定义路由时,需在rest_api_init
动作中使用register_rest_route()
函数。 该函数接受四个参数:
-
命名空间: 所有路由都必须命名空间化,作为“wp-json”之后下一个URL段。 默认路由的命名空间为
wp
。 命名空间避免了路由冲突。 -
路由路径: 命名空间后的URL。 例如,“/products”或“/products/(?P
[d] )”(允许在最后一个URL段中使用数字,例如帖子ID)。 -
端点数组: 定义路由的端点,包含方法、回调函数、参数等信息。
-
override
参数(可选): 布尔值,用于处理与已定义路由的冲突。 默认为false
,尝试合并路由;设置为true
则替换已声明的路由。
设置端点:方法和字段
端点需要定义一个或多个HTTP传输方法(GET/POST/PUT/DELETE)。 可以使用WP_REST_Server
类中的常量来定义方法,例如WP_REST_Server::READABLE
(只允许GET请求)或WP_REST_Server::ALLMETHODS
(允许所有方法)。
在定义字段时,可以指定字段的默认值、清理回调函数等。 这使得回调函数能够信任它接收到的数据。
回调函数和权限回调函数
每个端点的回调函数(在callback
键中指定)是请求将被分派到的方法(如果权限回调函数通过)。 权限回调函数(在permission_callback
键中指定)检查当前用户是否有权访问端点。
处理和响应请求
回调函数接收WP_REST_Request
对象,可以使用get_params()
方法获取已清理和验证的参数。 可以使用rest_ensure_response()
函数创建WP_REST_Response
对象,确保响应是正确的JSON格式,并包含必要的标头。
总结:自定义API,无限可能
WordPress REST API的默认路由非常有用,但自定义路由提供了更强大的控制和扩展能力。 当默认路由无法满足需求时,创建自定义路由是一个有效的解决方案。
以上是将自定义路线添加到WordPress REST API的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

博客是人们在网上表达观点、意见和见解的理想平台。许多新手渴望建立自己的网站,却因担心技术障碍或成本问题而犹豫不决。然而,随着平台不断发展以满足初学者的能力和需求,现在开始变得比以往任何时候都更容易。 本文将逐步指导您如何建立一个WordPress博客,从主题选择到使用插件提升安全性和性能,助您轻松创建自己的网站。 选择博客主题和方向 在购买域名或注册主机之前,最好先确定您计划涵盖的主题。个人网站可以围绕旅行、烹饪、产品评论、音乐或任何激发您兴趣的爱好展开。专注于您真正感兴趣的领域可以鼓励持续写作

有四种方法可以调整 WordPress 文章列表:使用主题选项、使用插件(如 Post Types Order、WP Post List、Boxy Stuff)、使用代码(在 functions.php 文件中添加设置)或直接修改 WordPress 数据库。

最近,我们向您展示了如何通过允许用户将自己喜欢的帖子保存在个性化库中来为用户创建个性化体验。您可以通过在某些地方(即欢迎屏幕)使用他们的名字,将个性化结果提升到另一个水平。幸运的是,WordPress使获取登录用户的信息变得非常容易。在本文中,我们将向您展示如何检索与当前登录用户相关的信息。我们将利用get_currentuserinfo(); 功能。这可以在主题中的任何地方使用(页眉、页脚、侧边栏、页面模板等)。为了使其工作,用户必须登录。因此我们需要使用

您想了解如何在父分类存档页面上显示子分类吗?在自定义分类存档页面时,您可能需要执行此操作,以使其对访问者更有用。在本文中,我们将向您展示如何在父分类存档页面上轻松显示子分类。为什么在父分类存档页面上显示子分类?通过在父分类存档页面上显示所有子分类,您可以使其不那么通用,对访问者更有用。例如,如果您运行一个关于书籍的WordPress博客,并且有一个名为“主题”的分类法,那么您可以添加“小说”、“非小说”等子分类法,以便您的读者可以

过去,我们分享过如何使用PostExpirator插件使WordPress中的帖子过期。好吧,在创建活动列表网站时,我们发现这个插件非常有用。我们可以轻松删除过期的活动列表。其次,多亏了这个插件,按帖子过期日期对帖子进行排序也非常容易。在本文中,我们将向您展示如何在WordPress中按帖子过期日期对帖子进行排序。更新了代码以反映插件中更改自定义字段名称的更改。感谢Tajim在评论中让我们知道。在我们的特定项目中,我们将事件作为自定义帖子类型。现在

WordPress对初学者来说容易上手。1.登录后台后,用户界面直观,简洁的仪表板提供所有必要功能链接。2.基本操作包括创建和编辑内容,所见即所得的编辑器简化了内容创建。3.初学者可以通过插件和主题扩展网站功能,学习曲线存在但可以通过实践掌握。

您是否正在寻找自动化 WordPress 网站和社交媒体帐户的方法? 通过自动化,您将能够在 Facebook、Twitter、LinkedIn、Instagram 等平台上自动分享您的 WordPress 博客文章或更新。 在本文中,我们将向您展示如何使用 IFTTT、Zapier 和 Uncanny Automator 轻松实现 WordPress 和社交媒体的自动化。 为什么要自动化 WordPress 和社交媒体? 自动化您的WordPre

我们的一位用户询问其他网站如何在页脚中显示查询数量和页面加载时间。您经常会在网站的页脚中看到这一点,它可能会显示类似以下内容:“1.248秒内64个查询”。在本文中,我们将向您展示如何在WordPress中显示查询数量和页面加载时间。只需将以下代码粘贴到主题文件中您喜欢的任何位置(例如footer.php)。queriesin
