首页 > 解决方案 > 有什么方法可以为 wordpress 中的自定义数据库表创建自定义 REST API

问题描述

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

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

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

标签: phpwordpressrestcrud

解决方案


是的,您几乎可以以任何您想要的方式扩展 WP REST API。您可以使用该功能添加任何您想要的路线register_rest_route()

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

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}"
    ) );
}

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

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该类从自定义表中提取我想要的所有内容,然后我有另一个自定义函数以 WP REST API 有效 JSON 格式返回它generate_json_data(),然后返回数据。

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


推荐阅读