如何使用WordPress REST API 创建自定义端点?

2024-11-09 14 0

在WordPress中创建自定义REST API端点可以通过以下几个步骤来完成:

1. 添加钩子到 rest_api_init 动作

WordPress REST API 提供了一个 rest_api_init 动作钩子,你可以在该钩子上注册新的路由和端点。

2. 使用 register_rest_route 函数注册路由

register_rest_route 函数用于注册新的API端点。以下是该函数的基本用法:

register_rest_route( $namespace, $route, $args );
  • $namespace: API命名空间,通常是一个URL前缀,用于分组相关的端点。
  • $route: API端点的路径。
  • $args: 一个数组,包含了端点的详细信息,如HTTP方法、回调函数等。

3. 创建回调函数处理请求

$args 数组中,你需要定义一个回调函数来处理API请求。

以下是一个创建自定义端点的完整示例:

function my_custom_endpoints() {
    // 注册一个新的API端点
    register_rest_route( 'myplugin/v1', '/author/(?P<id>d+)', array(
        'methods' => 'GET', // 允许的HTTP方法
        'callback' => 'my_get_author_callback', // 当端点被请求时调用的函数
        'permission_callback' => function () {
            return current_user_can( 'read' ); // 权限检查
        },
    ) );
}

add_action( 'rest_api_init', 'my_custom_endpoints' );

function my_get_author_callback( $request ) {
    // 获取请求中的参数
    $id = $request->get_param( 'id' );

    // 根据ID获取作者信息
    $author = get_user_by( 'id', $id );

    if ( empty( $author ) ) {
        return new WP_Error( 'no_author', '作者不存在', array( 'status' => 404 ) );
    }

    // 返回作者信息
    return array(
        'id' => $author->ID,
        'name' => $author->display_name,
        'username' => $author->user_login,
    );
}

在这个例子中,我们创建了一个名为 myplugin/v1/author/{id} 的端点,它接受一个数字ID作为参数,并返回对应的作者信息。

4. 使用自定义端点

一旦你注册了自定义端点,你就可以通过以下URL访问它:

https://yourwordpressdomain.com/wp-json/myplugin/v1/author/1

这里的 1 是作者ID的示例。

注意事项

  • 确保你的回调函数能够处理不同的HTTP方法(GET, POST, PUT, DELETE等),并根据需要返回适当的数据或错误。
  • 使用 permission_callback 来确保只有有权限的用户可以访问端点。
  • 对于复杂的逻辑和数据结构,你可能需要使用更高级的查询和数据处理技术。

通过以上步骤,你可以为WordPress创建强大的自定义REST API端点。

相关文章

如何在WordPress主题中创建自定义页面模板?
如何使用acf_add_options_page()在WordPress中添加自定义设置页面?
在WordPress插件中,如何使用update_option()和get_option()来存储和检索设置?
在WordPress主题开发中,如何使用wp_nav_menu()函数创建响应式菜单?
如何使用WP_Query来创建自定义查询并循环输出文章?
在WordPress主题中,如何自定义导航菜单?