API WP REST É bastante fácil renomear a parte padrão wp-json uri?

8

A API REST do WP expõe muitas informações, portanto filtre os pontos de extremidade que não são necessários para a exposição.

Não consigo filtrar tudo: o local dos arquivos de mídia necessários é exposto, por exemplo.

Como uma proteção extra, eu gostaria de mistificar o uri padrão.

Eu gostaria de mudar por exemplo: http://example.com/wp-json/wp/v2/para http://example.com/mistified/wp/v2/

Isso é bastante fácil possível?

violacase
fonte
Para proteção? O URL ainda estará visível em seu HEAD, o que significa que qualquer pessoa pode vê-lo em sua fonte. E o espaço para nome deve mostrar automaticamente todos os pontos de extremidade disponíveis. Veja v2.wp-api.org/guide/discovery
jgraup
As solicitações que não são da API serão redirecionadas para um URL externo onde o aplicativo de front-end reside. Então eu acho que não vai aparecer na cabeça lá. Eu filtrei todos os pontos de extremidade padrão, incluindo /wp/v2. Somente os tipos de postagem personalizados são expostos agora. E, claro, o prefixo `wp-json '.
Violacase
Você já encontrou uma solução para isso não funcionar @violacase?
precisa saber é o seguinte

Respostas:

8

Observe que, para as versões atuais do WordPress, o uso do json_url_prefixfiltro não funciona mais.

No WordPress 4.7 (e usando a API REST do núcleo em vez de um plug-in), era isso que eu precisava para alterar o prefixo da API.

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

Se isso não funcionar imediatamente, você precisará liberar as regras de reescrita. Você pode executar esse pedaço de código uma vez para fazê-lo (não o deixe no seu código para que seja executado sempre):

flush_rewrite_rules(true);
rorymorris89
fonte
Além disso, você pode criar um procedimento usando php para se curvar para um determinado ponto de extremidade antigo, verificar se ainda está funcionando, então é a hora que você deseja, flush_rewrite_rules(true);mas se a resposta de curl indicar que apiagora está funcionando, você não precisa mais liberar
Abel Melquiades Callejo 19/03
0

Você pode usar o json_url_prefixgancho para remover 'wp-json'todas as rotas da API. O exemplo abaixo fará o exemplo na sua pergunta:

add_filter( 'json_url_prefix', 'my_theme_api_slug'); 
function my_theme_api_slug( $slug ) { 
    return 'mistified';
}
Dan.
fonte
Não consigo fazer isso funcionar. Talvez um problema de refluxo?
violacase