Die HTTP-API liegt komplett objektorientiert vor. D.h. Sie können alle Klassen, wie WP_Http
, WP_Http_Streams
oder WP_Http_Curl
entsprechend nutzen (Sie finden alle Klassen in der Datei /wp-includes/class-http.php
). WordPress liefert aber auch so genannte Helfer-Funktionen, die ich Ihnen an dieser Stelle wärmstens empfehlen will. Das positive daran ist, dass WordPress das Fehlermanagement im Hintergrund übernimmt. Das bedeutet, alle Funktionen geben einen Fehler der Klasse WP_Error
aus, falls etas schief ging. Sie müssen Ihn dann nur noch entsprechend behandeln.
Wie bereits angesprochen wurde der Unterbau der HTTP-API in Version 4.6. geändert. Es hielten damit noch mehr Klassen Einzug in WordPress. Neben den Helfer-Funktionen gibt es auch entsprechende Methoden der Klassen die gleichermaßen genutzt werden können. Im nachfolgenden Teil beschreibe ich deshalb wie Sie einerseits die Helfer-Funktionen oder aber die Klassenmethoden nutzen.
wp_remote_request()
<?php
function wp_remote_request( $url, $args = array() ) {
...
}
?>
Es gilt:
Zurückgegeben wird entweder ein Objekt der Klasse WP_Error
oder ein Array mit Werten. Beachten Sie bitte, dass die Rückgabewerte abhängig vom Webserver sind. Es kann also vorkommen, dass in Ihrer Abfrage einige Rückgabewerte nicht existieren.
Seit Version 4.6. existiert im Rückgabe-Array der Schlüssel http_response
welches ein WP_HTTP_Requests_Response
-Objekt zurückgibt. Aus Gründen der Rückwärtskompatibilität gibt WordPress jedoch noch immer das Array anstatt des neueren Objekts zurück.
Beispiel
wp_remote_get()
<?php
function wp_remote_get( $url, $args = array() ) {
...
}
?>
Es gilt:
wp_remote_post()
<?php
function wp_remote_post( $url, $args = array() ) {
...
}
?>
Es gilt:
wp_remote_head()
<?php
function wp_remote_head( $url, $args = array() ) {
...
}
?>
Es gilt:
wp_safe_remote_request()
Diese Funktion ist letztlich das selbe wie wp_remote_request()
mit dem Unterschied, dass sie immer dann Anwendung finden soll, wenn der Parameter $url
frei wählbar ist. Also wenn eventuell unsichere URLs aufgerufen werden könnten.
<?php
function wp_safe_remote_request( $url, $args = array() ) {
...
}
?>
Es gilt:
wp_safe_remote_get()
Diese Funktion ist letztlich das selbe wie wp_remote_get()
mit dem Unterschied, dass sie immer dann Anwendung finden soll, wenn der Parameter $url
frei wählbar ist. Also wenn eventuell unsichere URLs aufgerufen werden könnten.
<?php
function wp_safe_remote_get( $url, $args = array() ) {
...
}
?>
Es gilt:
wp_safe_remote_post()
Diese Funktion ist letztlich das selbe wie wp_remote_post()
mit dem Unterschied, dass sie immer dann Anwendung finden soll, wenn der Parameter $url
frei wählbar ist. Also wenn eventuell unsichere URLs aufgerufen werden könnten.
<?php
function wp_safe_remote_post( $url, $args = array() ) {
...
}
?>
Es gilt:
wp_safe_remote_head()
Diese Funktion ist letztlich das selbe wie wp_remote_head()
mit dem Unterschied, dass sie immer dann Anwendung finden soll, wenn der Parameter $url
frei wählbar ist. Also wenn eventuell unsichere URLs aufgerufen werden könnten.
<?php
function wp_safe_remote_head( $url, $args = array() ) {
...
}
?>
Es gilt:
wp_remote_retrieve_headers()
Um alle Header-Werte der Antwort zu erhalten, müssen Sie nicht selbst auf ein WP_Error
-Objekt oder ähnliches prüfen. WordPress kann das für Sie erledigen. Und zwar mit dieser Helfer-Funktion:
<?php
function wp_remote_retrieve_headers( &$response ) {
...
}
?>
Es gilt:
wp_remote_retrieve_header()
Auch einzelne Werte im Antwort-Header können auf ihre Existenz hin überprüft werden.
<?php
function wp_remote_retrieve_header( &$response, $header ) {
...
}
?>
Es gilt:
wp_remote_retrieve_response_code()
Zur schnellen Überprüfung ob eine Abfrage abgesetzt werden konnte und ob eine Antwort zurückkam, kann wp_remote_retrieve_response_code()
genutzt werden. Es liefert einen der in Kapitel 9.1. angesprochenen HTTP-Statuscodes zurück (eine genaue Übersicht über alle Codes finden Sie hier: http://de.wikipedia.org/wiki/HTTP-Statuscode).
<?php
function wp_remote_retrieve_response_code( &$response ) {
...
}
?>
Es gilt:
wp_remote_retrieve_response_message()
Benötigen Sie den unverarbeitete Status-Nachricht können Sie diese Funktion nutzen:
<?php
function wp_remote_retrieve_response_message( &$response ) {
...
}
?>
Es gilt:
wp_remote_retrieve_body()
Um den eigentlichen Inhalt einer Abfrage-Antwort zu erhalten, können Sie diese Helfer-Funktion nutzen:
<?php
function wp_remote_retrieve_body( &$response ) {
...
}
?>
Es gilt: