Tratando erros de wp_remote_get e wp_remote_post corretamente
Como consumir APIs externas com a HTTP API do WordPress sem provocar fatal errors.
Causa
Ignorar is_wp_error() no retorno de wp_remote_get/wp_remote_post e tentar acessar diretamente o corpo ou o status da resposta causa erros de 'member function on null/array' quando a requisição falha (timeout, DNS, SSL).
Como resolver
Sempre verifique is_wp_error( $resposta ) antes de usar wp_remote_retrieve_body() ou wp_remote_retrieve_response_code(), e configure um timeout explícito para evitar travamentos.
PHP
$resposta = wp_remote_get( 'https://api.exemplo.com/dados', [
'timeout' => 10,
] );
if ( is_wp_error( $resposta ) ) {
error_log( 'Erro na API: ' . $resposta->get_error_message() );
return null;
}
$corpo = json_decode( wp_remote_retrieve_body( $resposta ), true );