Ich beginne ein bisschen mit der REST-API. Wenn ich nicht vollständig irregeführt werde, wird der init
Aktions-Hook auch ausgeführt, wenn es sich um eine REST-API-Anforderung handelt. Jetzt möchte ich nur Code ausführen, wenn es sich nicht um eine REST-API-Anforderung handelt.
Also suchte ich nach einem Befehl wie is_rest()
, um so etwas zu machen
<?php
if( ! is_rest() ) echo 'no-rest-request';
?>
Aber ich konnte so etwas nicht finden. Gibt es is_rest()
da draußen eine?
init
. Dies geschieht dann . Beachten Sie auch, dass die Teile der API intern für Anforderungen verwendet werden können, bei denen es sich nicht um REST-Anforderungen handelt. Wenn Sie sich also auf diese Erkennung verlassen, besteht die Gefahr, dass etwas beschädigt wird.Antworten:
Es ist ein guter Punkt von @Milo, die
REST_REQUEST
Konstante ist definiert alstrue
,rest_api_loaded()
wenn$GLOBALS['wp']->query_vars['rest_route']
nicht leer.Es ist eingehakt in
parse_request
via:aber
parse_request
feuert später alsinit
- Siehe zum Beispiel den Codex hier .Es gab einen Vorschlag (von Daniel Bachhuber) in Ticket Nr. 34373 bezüglich
WP_Query::is_rest()
, aber er wurde verschoben / annulliert.quelle
Bin nur über dasselbe Problem gestolpert und habe eine einfache Funktion geschrieben
is_rest
, mit der Sie prüfen können, ob es sich bei der aktuellen Anforderung um eine WP REST API-Anforderung handelt.Verweise:
quelle
Um dieses Problem zu lösen, habe ich eine einfache benutzerdefinierte Funktion geschrieben, basierend auf der Annahme, dass, wenn der angeforderte URI unter die Rest-API-URL der WordPress-Site fällt, es sich um eine Rest-API-Anforderung handelt.
Ob es sich um einen gültigen oder einen authentifizierten Endpunkt handelt, kann von dieser Funktion nicht bestimmt werden. Die Frage ist: Ist die URL eine potenzielle Rest-API-URL?
Wenn Ihre
$_SERVER['REQUEST_URI']
Daten nicht ordnungsgemäß ausgefüllt sind, wird diese Funktion trotzdem zurückgegebenfalse
.Es gibt keine feste Kodierung der URL. Wenn Sie also aus irgendeinem Grund Ihre API-URL-Basis ändern, wird dies angepasst.
quelle
Vielleicht nicht richtig, aber ich landete mit
Fühlen Sie sich frei, mich zu informieren, wenn dies nicht richtig ist. Der Versuch, einen hilfreichen Plugin-Starter für die gemeinsame Nutzung zu erstellen: https://gitlab.com/ripp.io/wordpress/plugin-starter
quelle
Zwei Möglichkeiten hier wirklich,
REST_REQUEST
definiert ist.rest_api_init
Sie ein, wo Sie einhaken wollteninit
.quelle