API WP REST Est-il assez facile de renommer la partie uri wp-json par défaut?

8

L'API WP REST expose beaucoup d'informations, donc je filtre les points de terminaison qui ne sont pas nécessaires pour exposer.

Je ne peux pas tout filtrer: l'emplacement des fichiers multimédias nécessaires est exposé par exemple.

Comme protection supplémentaire, je voudrais mystifier l'URI par défaut.

Je voudrais changer par exemple: http://example.com/wp-json/wp/v2/à http://example.com/mistified/wp/v2/

Est-ce assez simple possible?

violacase
la source
Pour la protection? L'URL sera toujours visible dans votre HEAD, ce qui signifie que tout le monde peut la voir dans votre source. Et l'espace de noms devrait afficher automatiquement tous vos points de terminaison disponibles. Voir v2.wp-api.org/guide/discovery
jgraup
Les demandes non api seront redirigées vers une URL externe où réside l'application frontale. Je ne pense donc pas que cela apparaîtra dans la tête. J'ai filtré tous les points de terminaison par défaut, y compris /wp/v2. Seuls les types de publication personnalisés sont exposés maintenant. Et bien sûr le préfixe `wp-json '.
violacase
Avez-vous déjà trouvé une solution à ce problème de @violacase?
rorymorris89

Réponses:

8

Veuillez noter que pour les versions actuelles de WordPress, l'utilisation du json_url_prefixfiltre ne fonctionne plus.

Sur WordPress 4.7 (et en utilisant l'API REST à partir du noyau au lieu d'un plugin), c'est ce dont j'avais besoin pour changer le préfixe de l'API.

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

Si cela ne fonctionne pas immédiatement, vous devrez vider les règles de réécriture. Vous pouvez exécuter ce morceau de code une fois pour le faire (ne le laissez pas dans votre code pour qu'il s'exécute à chaque fois):

flush_rewrite_rules(true);
rorymorris89
la source
De plus, vous pouvez créer une procédure en utilisant php pour recourber vers un certain ancien point de terminaison, vérifier si cela fonctionne toujours, alors c'est le moment, flush_rewrite_rules(true);mais si la réponse curl indique que le apifonctionne maintenant, vous n'avez plus besoin de vider
Abel Melquiades Callejo
0

Vous pouvez utiliser le json_url_prefixcrochet pour supprimer 'wp-json'toutes les routes d'API. L'exemple ci-dessous fera l'exemple de votre question:

add_filter( 'json_url_prefix', 'my_theme_api_slug'); 
function my_theme_api_slug( $slug ) { 
    return 'mistified';
}
Dan.
la source
Je ne peux pas faire fonctionner ça. Peut-être un problème de refusion?
violacase du