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