有没有任何方法可以为wordpress中的自定义数据库表创建自定义REST API



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

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

有没有办法在wordpress中为separte数据库的CRUD操作编写自定义控制器?或者,如果不是一个单独的数据库,那么有没有任何方法可以将API用于wordpress的同一数据库中的自定义表?

是的,您可以以任何方式扩展WPREST 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类从自定义表中提取我想要什么的函数,然后我有另一个自定义函数,它以WPRESTneneneba API有效JSON格式generate_json_data()返回它,然后返回数据

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

最新更新