有什么方法可以在 wordpress 中为自定义数据库表创建自定义 REST API

Is there any way to create Custom REST API for custom database tables in wordpress

我正在创建一个 android 应用程序,我正在使用 wordpress 为其创建网站。 我需要一个 REST API 来处理应用程序和用户的数据。

我需要在同一台服务器上存储各种数据,我需要一个单独的数据库,这将包括集中应用程序和网站。 为什么我需要这样做?因为我不知道如何使用任何其他 PHP 框架创建 REST api。 而且我不想使用 firebase,因为我需要将数据存储在结构化数据库中,例如 MySQL.

有什么方法可以为 wordpress 中的单独数据库编写用于 CRUD 操作的自定义控制器吗? 或者,如果不是单独的数据库,那么有没有办法在与 wordpress 相同的数据库中使用 API 自定义表?

是的,您几乎可以随心所欲地扩展 WP REST API。您可以使用 register_rest_route() 函数添加您喜欢的任何路线。

例如,我有几个自定义 post 类型,它们依赖于来自其他关系数据库和表的信息。

foreach( $ext_post_types as $post_type ){
    $post_type = pluralize($post_type);

    register_rest_route( 'ext/v1', "/{$post_type}/(?P<ID>\d+)", array(
        'methods' => 'GET',
        'callback' => "extended_api_endpoint_{$post_type}"
    ) );
}

在每个回调函数中,我处理我需要的来自其他表的所有数据,post 类型等

function extended_api_endpoint_props( $data ){
    $external_data = get_external_relational_data( absint($data['ID']) );

    if( empty( $external_data ) ){
        return null;
    }

    $return = array();
    foreach( $external_data as $data_id ){
        $return[] = generate_json_data( $data_id );
    }

    return $return;
}

这让我可以提取我想要的所有信息(get_external_relational_data() 函数是一个使用 $wpdb class 从自定义表中提取我想要的所有信息的函数,并且然后我有另一个自定义函数 return 在 WP REST API 有效 JSON 格式 generate_json_data() 中,然后 return 数据。

这让我可以访问 https://[MYSITE].com/wp-json/ext/v1/props/12345 以获取我所有的自定义数据库信息,同时仍然原生地集成到 WP REST API 中。