dbout/wp-module-rest-api

快速添加路由到WordPress Rest API。

1.1.1 2024-05-21 09:37 UTC

This package is auto-updated.

Last update: 2024-09-21 10:23:30 UTC


README

GitHub Release tests Packagist Downloads

WordPress模块,专为希望快速添加路由到WordPress Rest API的开发者设计。

💡为了简化该库的集成,我们建议使用以下工具之一: BedrockThemosisWordplate

文档

如果您想了解更多关于WordPress API的工作方式,您可以阅读WordPress文档 :)

安装

需求

服务器需求基本上与WordPress相同,增加了一些

使用Composer安装

您可以使用Composer。如果您还没有安装Composer,请遵循安装说明

composer require dbout/wp-module-rest-api

在您的PHP脚本中,请确保包含自动加载器

require __DIR__ . '/vendor/autoload.php';

使用

在创建您的第一个路由之前,您必须初始化该模块。建议在主题的functions.php文件的开头或在mu-plugin中添加此代码。

use Dbout\WpRestApi\RouteLoader;

// One folder
$loader = new RouteLoader(__DIR__ . '/src/Api/Routes');

// Multiple folders
$loader = new RouteLoader([
    __DIR__ . '/themes/my-theme/api'
    __DIR__ . '/src/Api/Routes',
]);

// You can also use pattern
$loader = new RouteLoader(__DIR__ . '/src/Modules/*/Api/Routes');

$loader->register();

💡模块将自动搜索文件夹及其子文件夹中的所有类。

💡您可以将一个选项对象作为RouteLoader的第二个参数传递: 阅读文档

现在您已经初始化了模块,您只需在路由文件夹中创建您的第一个路由即可。

<?php

use Dbout\WpRestApi\Attributes\Route;
use Dbout\WpRestApi\Attributes\Action;

#[Route(
    namespace: 'app/v2',
    route: 'document/(?P<documentId>\d+)'
)]
class Document 
{

    #[Action(Method::GET)]
    public function get(\WP_REST_Request $request): \WP_REST_Response
    {
        // Add your logic 
        $id = $request->get_param('documentId');
       
        return new \WP_REST_Response([
            'success' => true,
        ]);
    }

   #[Action(Method::DELETE)]
    public function delete(\WP_REST_Request $request): \WP_REST_Response
    {
        // Add your logic 
        $id = $request->get_param('documentId');
        
        return new \WP_REST_Response([
            'success' => true,
        ]);
    }
}

您已创建了2个路由 🎉

  • GET:wp-json/app/v2/document/18
  • DELETE:wp-json/app/v2/document/18

逻辑非常简单,您可以使用以下方法:GETPOSTPUTPATCHDELETE

如果您需要,您可以传递一个方法数组来为操作定义多个方法

#[Action([Method::GET, Method::POST, Method::PUT])]
public function execute(\WP_REST_Request $request): \WP_REST_Response
{
    // Add your logic 

}

回调参数

如果您的路由包含参数,您可以将它们作为函数的参数检索

<?php

use Dbout\WpRestApi\Attributes\Route;
use Dbout\WpRestApi\Attributes\Action;

#[Route(
    'app/v2',
    'document/(?P<documentId>\d+)'
)]
class Document
{

    #[Action(Method::GET)]
    public function get(int $documentId): \WP_REST_Response
    {
        // Add your logic

        return new \WP_REST_Response([
            'success' => true,
        ]);
    }
}

💡如果您的函数包含一个WP_REST_Request参数,则WP_REST_Request对象将作为参数传递。

贡献

我们鼓励您为此存储库做出贡献,这样每个人都可以从新功能、错误修复以及任何其他改进中受益。请查看我们的贡献指南以了解如何提出拉取请求。