Buscar..


Introducción

La API REST de WordPress proporciona puntos finales de API para los tipos de datos de WordPress que permiten a los desarrolladores interactuar con sitios de forma remota mediante el envío y la recepción de objetos JSON (notación de objetos de JavaScript).

Cuando envíe contenido o realice una solicitud a la API, la respuesta se devolverá en JSON. Esto permite a los desarrolladores crear, leer y actualizar contenido de WordPress desde JavaScript del lado del cliente o desde aplicaciones externas, incluso aquellas escritas en idiomas más allá de PHP.

Observaciones

Para que este ejemplo simple de la API REST de WordPress funcione, necesita aprender cómo funciona con más detalle. La documentación oficial recomienda aprender sobre:

  1. Rutas / puntos finales, que son asignaciones de métodos HTTP individuales a rutas conocidas como "puntos finales", lo hace utilizando la función register_rest_route () , y aquí puede encontrar más información sobre rutas y puntos finales.

  2. Solicitudes: la API REST de WordPress define la clase WP_REST_Request que se utiliza para almacenar y recuperar información para la solicitud actual. WP_REST_Request objetos WP_REST_Request se generan automáticamente cuando realiza una solicitud HTTP a una ruta registrada. Los datos especificados en la solicitud determinarán qué respuesta obtendrá de la API. Aquí puede aprender más sobre la clase WP_REST_Request .

  3. Respuestas: son los datos que obtiene de la API. WP_REST_Response proporciona una forma de interactuar con los datos de respuesta devueltos por los puntos finales. En su definición de punto final, asigna un nombre a la función de devolución de llamada (respuesta) para servir a su interacción. Aquí puede obtener más información sobre la clase WP_REST_Response .

  4. Esquema: cada punto final requiere y proporciona estructuras de datos ligeramente diferentes, y esas estructuras se definen en el esquema de API. Si desea puntos finales mantenibles, detectables y fácilmente extensibles, se recomienda utilizar el esquema. Aquí puedes aprender más sobre el esquema .

  5. Clases de controladores: reúnen todos los elementos en un solo lugar. Con una clase de controlador, puede administrar el registro de rutas y puntos finales, manejar solicitudes, utilizar esquemas y generar respuestas API. Ya has aprendido sobre dos clases de controlador: WP_REST_Request y WP_REST_Response . Aquí puedes aprender más sobre las clases de controladores

Nota: parte de esta información está tomada del manual oficial de REST APi de Wordpress.

Ejemplo de trabajo completo

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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow