Поиск…


Вступление

API-интерфейс WordPress REST предоставляет конечные точки API для типов данных WordPress, которые позволяют разработчикам удаленно взаимодействовать с сайтами, отправляя и получая объекты JSON (Object Object Notation).

Когда вы отправляете контент или отправляете запрос API, ответ будет возвращен в JSON. Это позволяет разработчикам создавать, читать и обновлять контент WordPress с клиентского JavaScript или из внешних приложений, даже написанных на языках, выходящих за пределы PHP.

замечания

Чтобы этот простой пример WordPress REST API работал на вас, вам нужно узнать, как он работает более подробно. Официальная документация рекомендует узнать о:

  1. Маршруты / Конечные точки - которые являются сопоставлениями отдельных HTTP-методов для маршрутов, известных как «конечные точки» - вы выполняете это с помощью функции register_rest_route () , и здесь вы можете найти больше о маршрутах и ​​конечных точках .

  2. Запросы - API-интерфейс WordPress REST определяет класс WP_REST_Request который используется для хранения и получения информации для текущего запроса. Объекты WP_REST_Request автоматически генерируются для вас всякий раз, когда вы отправляете запрос HTTP на зарегистрированный маршрут. Данные, указанные в запросе, будут определять, какой ответ вы вернете из API. Здесь вы можете узнать больше о классе WP_REST_Request .

  3. Ответы - это данные, которые вы возвращаете из API. WP_REST_Response обеспечивает способ взаимодействия с данными ответа, возвращаемыми конечными точками. В определении конечной точки вы называете функцию обратного вызова (ответа) для обслуживания вашего взаимодействия. Здесь вы можете узнать больше о классе WP_REST_Response .

  4. Схема. Каждая конечная точка требует и предоставляет несколько разные структуры данных, и эти структуры определены в схеме API. Если вам нужны поддерживаемые, обнаруживаемые и легко расширяемые конечные точки, рекомендуется использовать схему. Здесь вы можете узнать больше о Схеме .

  5. Классы контроллера - они объединяют все элементы в одном месте. С помощью класса контроллера вы можете управлять регистрацией маршрутов и конечных точек, обрабатывать запросы, использовать схему и генерировать ответы API. Вы уже узнали о двух классах контроллера: WP_REST_Request и WP_REST_Response . Здесь вы можете узнать больше о Классах Контроллера

Примечание. Часть этой информации взята из официального справочника Wordpress REST APi

Полный рабочий пример

add_action('rest_api_init', 'my_rest_validate_endpoint' );
function my_rest_validate_endpoint() {

    // Declare our namespace
    $namespace = 'myrest/v1';

    // Register the route
    // Example URL matching this route:
    // http://yourdomain/wp-json/myrest/v1/guides/tag=europe/price=29
    register_rest_route($namespace,
                        // Using regular expressions we can initially validate the input
                        '/guides/tag=(?P<tag>[a-zA-Z0-9-]+)/price=(?P<price>[0-9]+)',
                        // We can have multiple endpoints for one route
                        array(
                            array(
                                'methods'   => 'GET',
                                'callback'  => 'my_get_guides_handler'
                            )
                        ),
                        // We can register our schema callback
                        // 'schema' => 'my_get_guide_schema',
                
        );

    // You can register another route here the same way

}


// The callback handler for the endpoint
function my_get_guides_handler(WP_REST_Request $request) {

    // Get the parameters:
    $tag = $request->get_param('tag');
    $price = $request->get_param('price');

    // Do something with the parameters
    // for instance: get matching guides from the DB into an array - $results
    // ...
    
    // Prepare the response
    $message = "We've found " . count($results) . " guides ";
    $message .= "(searching for a tag: " . $tag . ", with a price tag: " . $price . ")";

    // The response gets automatically converted into a JSON format
    return new WP_REST_Response(
        array(
            'results' => $results,
            'message' => $message,
            'status' => 'OK'
        ),
        200 );

}


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow