API REST WP È abbastanza facile rinominare la parte uri wp-json predefinita?


8

L'API REST WP espone molte informazioni, quindi filtro gli endpoint che non sono necessari per esporre.

Non riesco a filtrare tutto: la posizione dei file multimediali necessari è esposta ad esempio.

Come protezione aggiuntiva, vorrei mistificare l'uri predefinito.

Vorrei cambiare ad esempio: http://example.com/wp-json/wp/v2/a http://example.com/mistified/wp/v2/

È piuttosto facile possibile?


Per protezione? L'URL sarà comunque visibile nel tuo HEAD, il che significa che chiunque può vederlo nella tua fonte. E lo spazio dei nomi dovrebbe mostrare automaticamente tutti gli endpoint disponibili. Vedi v2.wp-api.org/guide/discovery
jgraup

Le richieste non API verranno reindirizzate a un URL esterno in cui risiede l'app frontend. Quindi non credo che mostrerà in HEAD lì. Ho filtrato tutti gli endpoint predefiniti inclusi /wp/v2. Solo i tipi di post personalizzati sono ora esposti. E ovviamente il prefisso `wp-json '.
violacase,

Hai mai trovato una soluzione a questo @violacase non funzionante?
rorymorris89,

Risposte:


8

Si noti che per le versioni correnti di WordPress, l'utilizzo del json_url_prefixfiltro non funziona più.

Su WordPress 4.7 (e utilizzando l'API REST dal core anziché un plug-in), questo è ciò di cui avevo bisogno per cambiare il prefisso API.

add_filter( 'rest_url_prefix', 'my_theme_api_slug'); 
function my_theme_api_slug( $slug ) { return 'api'; }

Se questo non funziona immediatamente, dovrai svuotare le regole di riscrittura. Puoi eseguire questo pezzo di codice una volta per farlo (non lasciarlo nel tuo codice in modo che funzioni sempre):

flush_rewrite_rules(true);

Inoltre, puoi creare una procedura usando php per arricciarti verso un certo vecchio endpoint, controlla se funziona ancora, allora è questo il momento flush_rewrite_rules(true);ma se la risposta dell'arriccia dice che apiora funziona, non devi più svuotare
Abel Melquiades Callejo

0

È possibile utilizzare l' json_url_prefixhook per rimuovere 'wp-json'attraverso tutte le rotte API. L'esempio seguente farà l'esempio nella tua domanda:

add_filter( 'json_url_prefix', 'my_theme_api_slug'); 
function my_theme_api_slug( $slug ) { 
    return 'mistified';
}

Non riesco a farlo funzionare. Forse un problema di riflusso?
violacase,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.