HTTP API harici bir kaynak ile etkileşim (POST,GET) kurmamız gereken durumlarda işimizi kolaylaştıran bir api’dir . Farklı kaynak demişken tabii ki verileri cURL ile yada file_get_contents ile alabilirsiniz ancak sunucu tabanlı bağımlılığı azaltmak için WordPress HTTP API kullanmamız daha faydalı olacaktır.
Şimdi gelelim işlerin büyük bir kısmını halledebileceğimiz metodlara, (tüm listeyi buradan görebilirsiniz)
wp_remote_get()
Kaynaktan veri çekmeye sağlar, gelen cevapta header ve content değerleri bulunur.
//zorunlu olarak kayak url belirtilmelidir
$data = wp_remote_get( "http://wphandle.com");
// opsiyonel olarak $arg kullanabilirsiniz.
$data = wp_remote_get( $url,
array(
'timeout' => 120,
'httpversion' => '1.1',
'sslverify' => false )
);
//sayfanın çıktısı için
if ( $data['response']['code'] == 200 ) { // http durum kodunu kontrol et
$result = $data["body"];
}
// eğer geçerli bir veri dönmezse WP_ERROR objesi döner.
Ayrıca bkz: codex
wp_remote_post()
Adından da anlaşıldığı üzere uzak sunucuya veri göndermeye yarar.
Örnek olarak yandex metrica eklentisinde kullandığım oauth doğrulama fonksiyonunu ele alacağım.
/**
* kodu okumadan önce uygun parametlerelerin
* yandex server'ına gönderilmesi sonucunda json veri döndürüldüğünü bilmeniz yeterlidir.
*/
public function connect_oauth_server( $confirmation_code ) {
// gerekli parametreler
$param = 'grant_type=authorization_code&code='.$confirmation_code.'&client_id='.$this->app_id.'&client_secret='.$this->app_secret.'';
$url = "https://oauth.yandex.com/token";
//header'da göndereceklerimiz
$header = array(
'POST /token HTTP/1.1',
'Host: oauth.yandex.com',
'Content-type: application/json',
'Content-Length: ' . strlen( $param ),
);
$data = wp_remote_post( $url, array(
'method' => 'POST',
'timeout' => 45,
'httpversion' => '1.1',
'header' => $header,
'body' => $param,
'sslverify' => false
)
);
$http_code = $data["response"]["code"];
// http durumu kontrolü
if ( ( $http_code != '200' ) && ( $http_code != '400' ) ) {
$this->error = $http_code;
return false;
}
// json veriyi $result array'ına atadık.
$result = json_decode( $data["body"], true );
if ( empty( $result['error'] ) ) { // hata mesajı kontrolü
$this->access_token = $result['access_token'];
return true;
} else {
$this->error = $result['error'];
return false;
}
}
ilkine göre örnek biraz uzun oldu, meraklısına codex


Bir yanıt yazın