WP REST API Ist es ziemlich einfach, den Standard-wp-json-Uri-Teil umzubenennen?


8

Die WP REST-API stellt viele Informationen bereit, sodass ich Endpunkte filtere, die zum Anzeigen nicht benötigt werden.

Ich kann nicht alles filtern: Der Speicherort der benötigten Mediendateien wird beispielsweise angezeigt.

Als zusätzlichen Schutz möchte ich die Standard-Uri mystifizieren.

Ich möchte zum Beispiel ändern: http://example.com/wp-json/wp/v2/zu http://example.com/mistified/wp/v2/

Ist das ziemlich einfach möglich?


Zum Schutz? Die URL wird weiterhin in Ihrem HEAD angezeigt, was bedeutet, dass jeder sie in Ihrer Quelle sehen kann. Der Namespace sollte automatisch alle verfügbaren Endpunkte anzeigen. Siehe v2.wp-api.org/guide/discovery
jgraup

Nicht-API-Anfragen werden an eine externe URL umgeleitet, in der sich die Frontend-App befindet. Ich glaube also nicht, dass es dort im KOPF zu sehen sein wird. Ich habe alle Standardendpunkte herausgefiltert, einschließlich /wp/v2. Jetzt werden nur die benutzerdefinierten Beitragstypen angezeigt. Und natürlich das Präfix "wp-json".
Violacase

Haben Sie jemals eine Lösung für dieses Problem gefunden, das bei @violacase nicht funktioniert?
Rorymorris89

Antworten:


8

Bitte beachten Sie, dass bei aktuellen Versionen von WordPress die Verwendung des json_url_prefixFilters nicht mehr funktioniert.

Unter WordPress 4.7 (und unter Verwendung der REST-API aus dem Kern anstelle eines Plugins) musste ich das API-Präfix ändern.

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

Wenn dies nicht sofort funktioniert, müssen Sie die Umschreiberegeln löschen. Sie können diesen Code dazu einmal ausführen (lassen Sie ihn nicht in Ihrem Code, damit er jedes Mal ausgeführt wird):

flush_rewrite_rules(true);

Darüber hinaus können Sie eine Prozedur erstellen, indem Sie PHP verwenden, um auf einen bestimmten alten Endpunkt zu locken. Überprüfen Sie, ob dies noch funktioniert. Dann ist es an der Zeit, flush_rewrite_rules(true);aber wenn die Curl-Antwort besagt, dass das apijetzt funktioniert, müssen Sie nicht mehr spülen
Abel Melquiades Callejo

0

Sie können den json_url_prefixHook verwenden, um 'wp-json'alle API-Routen zu entfernen . Das folgende Beispiel zeigt das Beispiel in Ihrer Frage:

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

Ich kann das nicht zum Laufen bringen. Vielleicht ein Problem mit dem Nachspülen?
Violacase
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.