为开发人员定制WordPress:开发自定义REST API端点

2024年 4月 19日 110.7k 0

为开发人员定制WordPress:开发自定义REST API端点插图

WordPress 是世界上最流行的内容管理系统(CMS)之一,可以帮助大小企业建立和创建各种形式的网站内容。但是,WordPress已经不仅仅支持传统的博客内容,这在很大程度上要归功于WordPress REST API。

WordPress REST API 将 WordPress 和其他外部网络应用程序连接起来。它为更方便的交流提供了便利,并帮助您构建与内容管理系统平台无缝集成的身临其境、引人入胜的网络体验。

该 API 使用端点以 JSON 对象的形式检索和操作 WordPress 内容。有了这些端点,您就可以远程创建、读取、更新和删除(CRUD)WordPress 内容,而无需登录 WordPress 管理后台,从而提高了灵活性并扩展了 WordPress 核心功能以外的功能。

本指南将探讨什么是 WordPress REST API、它的好处、它如何扩展 WordPress 的基本功能,以及如何创建、注册和访问自定义端点。

前提条件

要学习本教程,您需要:

  • 了解 REST API
  • 已设置好的 WordPress 网站
  • 使用 WordPress 和 PHP 的知识

了解 WordPress REST API

WordPress REST API 是一个功能强大的接口,允许您使用标准 HTTP 方法与 WordPress 网站进行编程交互。

它的默认功能包括以结构化的JSON格式访问和操作各种类型的WordPress数据,如、页面、评论、用户和分类法。您还可以远程对内容执行 CRUD 操作。

不过,WordPress REST API的真正价值在于其通过自定义端点实现的可扩展性。您可以创建自定义端点来定制 API 以满足特定需求,例如集成附加功能、第三方服务或独特的数据结构。这种灵活性使您能够在 WordPress 的基础上构建高度定制、功能丰富的应用程序。

如何规划自定义 API 端点

规划自定义端点的结构和目的是高效 API 开发的关键。根据您的特定需求量身定制的端点需要仔细考虑,以确保最佳功能。战略规划有助于提高可扩展性和适应性,使端点面向未来,以适应不断变化的业务需求。

在实施前规划自定义应用程序接口端点可提供以下支持:

  • 明确端点功能 – 规划端点可明确端点的具体功能、预期数据类型和用途。
  • 一致性和开发效率 – 规划还能确保端点使用、响应类型和格式的一致性,从而改善与应用程序接口的交互。此外,了解应用程序接口的目的有助于正确实施,减少开发时间和出错风险。
  • 可扩展性和适应性 – 确定端点的需求有助于未来适应不断变化的业务需求和要求,而无需完全重新设计。
  • 安全性 – 正确的端点规划有助于确定访问或操作数据是否需要身份验证。通过应用程序接口获取内容有时不需要用户身份验证。不过,对于包含敏感数据或未经授权数据的内容,必须定义安全要求并实施授权和访问控制等措施,以帮助确保数据安全。

接下来的实践部分将介绍如何创建一个自定义端点,从 WordPress 数据库网站检索客户评价,该端点的地址为 site-domain/wp-json/custom/v2/testimonials

发送请求后,端点会返回一个 JSON 对象,其中包含回调函数中定义的 WordPress 网站上的推荐信息。

为端点创建自定义类型

首先,您需要创建自定义类型。

  • 从 WordPress 管理面板的 “外观” 部分导航到 “主题文件编辑器“。
  • 打开主题的 function.php 文件并添加以下代码:
    function create_custom_testimonial_type() {
    register_post_type('testimonials', array(
    'labels' => array(
    'name' => 'Testimonials',
    'singular_name' => 'Testimonial',
    ),
    'public' => true,
    'has_archive' => true,
    'show_in_rest' => true, // This enables REST API support
    ));
    }
    add_action('init', 'create_custom_testimonial_type');

     

    这段代码创建了一个自定义的 “testimonials” 类型,并启用了 WordPress REST API 支持( 'show_in_rest' => true )。add_action 钩子调用 create_testimonial_type 回调函数,并在执行过程中启动它。
    您可以根据自己的需要删除或添加标签和参数。

  • 单击更新文件保存更改。
  • 更新文件保存更改创建 custom_testimonial 文章类型。
    刷新仪表盘,查看 WordPress 仪表板中添加的 “Testimonials” 选项。新创建的推荐类型:新创建的推荐类型
  • 点击 Testimonials > 新增文字,创建包含推荐的新帖。您可以使用 Pullquote 区块。根据推荐信的展示方式,也可以使用其他区块。
  • 下面是两个使用 Pullquote 区块创建的推荐范例:

    新创建的客户推荐

    新创建的客户推荐

    在 WordPress 中注册自定义端点

    注册自定义端点可使其通过REST API使用。这需要使用 register_rest_route 函数,在 rest_api_init 钩子上调用该函数,并提供一个在路由被调用时将被调用的回调方法。

    将以下代码粘贴到主题的 function.php 文件中:

    add_action( 'rest_api_init', 'register_testimonial_rest_route' );
    function register_testimonial_rest_route(){
    register_rest_route(
    'custom/v2',
    '/testimonials',
    array(
    'methods' => 'GET',
    'callback' => 'get_testimonials',
    )
    );
    }

     register_rest_route() 包含三个参数:

    • 路由命名空间 ( $route_namespace ) – 这是 URL 段的第一部分,应遵循供应商/版本号模式。供应商代表供应商或主题标签。命名空间有助于区分端点,并帮助客户联系有关自定义端点的支持。本教程使用 custom/v2 命名空间。
    • 基本 URL( $route ) – 它紧跟命名空间,是映射到方法的 URL。您可以为路由注册多个端点。本教程中使用的是 /testimonials 路由,它告诉端点检索推荐信。
    • 端点的选项( $args ) – 这是一个数组,包含调用路由时使用的 HTTP 方法,以及发送请求时端点将调用的回调函数。我们将在下一节详细介绍回调函数。

    最后,请注意您的端点地址。端点的格式是 site-address/wp-json/namespace/route。因此,在本例中,端点将是 https://www.staging.kidspartysanctuary.co.uk/wp-json/custom/v2/testimonials

    为端点执行回调函数

    创建自定义类型并注册自定义端点后,下一步就是编写回调函数。每次访问端点时,都会调用该回调函数。

  • 使用下面的代码声明 get_testimonials 回调函数:
    function get_testimonials(){
    }
  • 初始化一个空的推荐数组,用于存储检索到的 WordPress 推荐数据:
    $testimonials = array();
  • WP_Query 调用设置一个名为 $args 的数组,其中包含查询参数。
    $args = array(
    'post_type' => 'testimonials', //specifies you want to query the custom post type   
    'testimonial',
    'nopaging' => true,  // no pagination, but retrieve all testimonials at once
    ),
  • 创建一个 WP_Query 类实例,该实例接收 $args 数组,根据指定参数执行查询,并将 WordPress 查询结果存储在 $query 变量中。
    $query = new WP_Query($args)
  • 编写一个条件语句来检查是否有推荐文章。然后,创建一个 while 循环来遍历,并返回推荐的 title 和 content
    if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
    $query->the_post();
    $testimonial_data = array( /*an array that stores the title 
    and content of every post*/
    'title' => get_the_title(),
    'content' => get_the_content(),
    // Add other fields as needed
    );
    $testimonials[] = $testimonial_data; 
    }
    wp_reset_postdata(); /* restores $post 
    global to the current post to avoid any conflicts in subsequent queries*/
    }
    return rest_ensure_response( $testimonials ); /*ensures response is 
    correctly set as a response object for consistency*/

    下面是完整的代码:

    function get_testimonials() {
    $testimonials = array();
    $args = array(
    'post_type' => 'testimonials',
    'nopaging' => true,
    );
    $query = new WP_Query( $args );
    if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
    $query->the_post();
    $testimonial_data = array(
    'title' => get_the_title(),
    'content' => get_the_content(),
    // Add other fields as needed
    );
    $testimonials[] = $testimonial_data;
    }
    wp_reset_postdata();
    }
    return rest_ensure_response( $testimonials );
    }
  • 使用 Postman 测试您的端点,验证是否可以访问数据。Postman 显示成功响应
    Postman 显示成功响应。您也可以使用浏览器进行测试。在浏览器地址栏输入 URL site-domain/wp-json/custom/v2/testimonials,访问端点。

    访问端点时浏览器显示的结果访问端点时浏览器显示的结果。

  • 小结

    本教程介绍了如何实现 WordPress API 自定义端点。要使用户能够访问 WordPress 数据库数据并与之交互,您只需注册实现回调函数的路由。

    相关文章

    JavaScript2024新功能:Object.groupBy、正则表达式v标志
    PHP trim 函数对多字节字符的使用和限制
    新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
    使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
    为React 19做准备:WordPress 6.6用户指南
    如何删除WordPress中的所有评论

    发布评论