WP REST API ¿Es bastante fácil cambiar el nombre de la parte wi-json uri predeterminada?

8

La API WP REST expone mucha información, por lo que filtro los puntos finales que no son necesarios para exponer.

No puedo filtrar todo: la ubicación de los archivos multimedia necesarios está expuesta, por ejemplo.

Como protección adicional, me gustaría mistificar la uri predeterminada.

Me gustaría cambiar por ejemplo: http://example.com/wp-json/wp/v2/a http://example.com/mistified/wp/v2/

¿Es esto bastante fácil posible?

violacase
fuente
¿Por protección? La URL seguirá siendo visible en su HEAD, lo que significa que cualquiera puede verla en su fuente. Y el espacio de nombres debería mostrar automáticamente todos los puntos finales disponibles. Ver v2.wp-api.org/guide/discovery
jgraup el
Las solicitudes que no sean de API se redirigirán a una url externa donde vive la aplicación de interfaz. Así que no creo que se muestre en la CABEZA allí. Filtré todos los puntos finales predeterminados incluidos /wp/v2. Solo los tipos de publicaciones personalizadas están expuestos ahora. Y, por supuesto, el prefijo 'wp-json'.
violacase
¿Alguna vez encontró una solución para esto que no funciona @violacase?
rorymorris89

Respuestas:

8

Tenga en cuenta que para las versiones actuales de WordPress, usar el json_url_prefixfiltro ya no funciona.

En WordPress 4.7 (y usando la API REST desde el núcleo en lugar de un complemento), esto es lo que necesitaba para cambiar el prefijo API.

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

Si esto no funciona de inmediato, deberá eliminar las reglas de reescritura. Puede ejecutar este fragmento de código una vez para hacerlo (no lo deje en su código para que se ejecute siempre):

flush_rewrite_rules(true);
rorymorris89
fuente
Además, puede crear un procedimiento mediante el uso de php para curvar a un cierto punto final anterior, verifique si eso todavía funciona, entonces ese es el momento, flush_rewrite_rules(true);pero si la respuesta de curl dice que apiahora está funcionando, ya no necesita enjuagar
Abel Melquiades Callejo
0

Puede usar el json_url_prefixgancho para eliminar 'wp-json'en todas las rutas API. El siguiente ejemplo hará el ejemplo en su pregunta:

add_filter( 'json_url_prefix', 'my_theme_api_slug'); 
function my_theme_api_slug( $slug ) { 
    return 'mistified';
}
Dan
fuente
No puedo hacer que esto funcione. Tal vez un problema de renovación?
violacase