Есть ли способ создать Custom REST API для пользовательских таблиц базы данных в WordPress - PullRequest
0 голосов
/ 16 апреля 2020

Я создаю android приложение, и я использую WordPress для создания веб-сайта для того же. Мне нужен REST API для обработки данных приложения и пользователей.

Мне нужно хранить различные виды данных, для которых мне нужна отдельная база данных на одном сервере, включая централизованное приложение и Веб-сайт. Зачем мне это нужно? Потому что я не знаю, как создать REST API с любой другой PHP Framework. И я не хочу использовать firebase, так как мне нужно хранить данные в структурированной базе данных, такой как MySQL.

Есть ли способ написать пользовательские контроллеры для операций CRUD для отдельной базы данных в WordPress? Или, если не отдельная база данных, есть ли способ использовать API для пользовательских таблиц в той же базе данных, что и в Wordpress?

1 Ответ

1 голос
/ 16 апреля 2020

Да, вы можете расширить API WP REST практически любым способом. Вы можете добавить любые маршруты, которые хотите, с помощью функции 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}"
    ) );
}

Внутри каждой функции обратного вызова я обрабатываю все необходимые мне данные из другие таблицы, тип сообщения и т. д. c

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 класс для извлечения всего, что я хочу из пользовательских таблиц, а затем у меня есть другая пользовательская функция, которая возвращает его в действительном API-интерфейсе WP REST JSON формат generate_json_data(), а затем возвращает данные.

Это позволяет мне получите доступ к https: // [MYSITE] .com / wp-json / ext / v1 / props / 12345 , чтобы получить всю информацию о моей пользовательской базе данных, оставаясь при этом встроенной в WP REST API.

...