Creare un Endpoint personalizzato con WordPress

Versione del 14 set 2023 alle 09:17 di Andrea (discussione | contributi) (Creata pagina con "← ritorno a WordPress Category:WordPress == Nozioni di base == Vuoi aggiungere endpoint personalizzati all'API? Iniziamo con una semplice funzione si...")
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

← ritorno a WordPress

Nozioni di base

Vuoi aggiungere endpoint personalizzati all'API?

Iniziamo con una semplice funzione simile a questa:

<?php
/**
 * Grab latest post title by an author!
 *
 * @param array $data Options for the function.
 * @return string|null Post title for the latest,? * or null if none.
 */
function my_awesome_func( $data ) {
    $result = array( 'id' => $data['id'] );      
    $response = new WP_REST_Response( $result );
    $response->set_status( 200 );
    return $response;
}

Per renderlo disponibile tramite l'API, dobbiamo registrare un percorso. Questo dice all'API di rispondere a una determinata richiesta con la nostra funzione.

Lo facciamo attraverso una funzione chiamata register_rest_route, che dovrebbe essere chiamata in una richiamata su rest_api_init per evitare di fare lavoro extra quando l'API non è caricata.

Dobbiamo passare tre cose a register_rest_route: namespace, il percorso che vogliamo e le opzioni.

Torneremo tra un po' sullo spazio dei nomi, ma per ora scegliamo "myplugin/v1". Faremo in modo che il percorso corrispondaa qualsiasi cosa con "/author/{id}", dove {id} è un numero intero.

<?php
add_action( 'rest_api_init', function () {
  register_rest_route( 'myplugin/v1', '/author/(?P<id>\d+)', array(
    'methods' => 'GET',
    'callback' => 'my_awesome_func',
  ) );
} );

In questo momento, stiamo registrando solo l'unico endpoint per il percorso. Il termine "route" si riferisce all'URL, mentre "endpoint" si riferisce alla funzione sottostante che corrisponde a un metodo ea un URL.

Ad esempio, se il dominio del tuo sito è example.com e hai mantenuto il percorso API di "wp-json", l'URL completo sarà http://example.com/wp-json/myplugin/v1/author/(? P\d+)


fonte: