Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the ultimate-addons-for-gutenberg domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /sites/danielkossmann.com/files/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the hustle domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /sites/danielkossmann.com/files/wp-includes/functions.php on line 6114
Como utilizar wp_remote_retrieve_body() no WordPress - Daniel Kossmann

Com a função PHP wp_remote_retrieve_body() você captura somente o conteúdo (body) de uma resposta HTTP. Caso houver um erro ou não existir o conteúdo, o retorno será uma string vazia ('').

Antes de mostrar um exemplo de código da função, vamos revisar a maneira mais comum de selecionar o conteúdo depois de uma requisição HTTP, que é selecionar a chave body do array de resposta:

<?php
$conteudo = $resposta['body'];Code language: PHP (php)

Como boa prática, é importante verificar primeiro se esta chave existe no array e se ele não retornou um erro. O código poderia ficar assim:

<?php
$conteudo = '';
if ( ! is_wp_error( $response ) && isset( $resposta['body'] ) ) {
	$conteudo = $resposta['body'];
}Code language: PHP (php)

A função wp_remote_retrieve_body() já faz essas validações, deixando o código mais enxuto:

<?php
$conteudo = wp_remote_retrieve_body( $resposta );Code language: PHP (php)

Validando um código PHP com wp_remote_retrieve_body() e PHP Code Checker

Procurando por exemplos práticos de códigos, encontrei um que utilizava a função para validar um código em PHP através da API gratuita do PHP Code Checker. Resolvi então fazer minha própria versão simplificada para exemplificar como utilizá-la em conjunto com a função PHP wp_remote_post().

<?php
// Código com erro
$codigo = '<?php echo "teste" . $ ; ?>';

// Envio do código para o PHP Code Checker
$url = "https://phpcodechecker.com/api";

$argumentos = array(
	'body' => array( 'code' => $codigo )
);

$resposta = wp_remote_post( $url, $argumentos );

// Tratamento da resposta
if ( is_wp_error( $resposta ) ) {
	$resposta_erro = $resposta->get_error_message();
	echo "Erro ao fazer a requisição: " . $resposta_erro;
} else {
	$conteudo = json_decode( wp_remote_retrieve_body( $resposta ), true );

	if ( is_array( $conteudo ) ) {
		if ( $conteudo['errors'] === 'TRUE' ) {
			echo "Encontrado erros: " . $conteudo['syntax']['message'];
		} else if ( $conteudo['errors'] === 'FALSE' ) {
			echo "Nenhum erro encontrado.";
		}
	} else {
		echo "Erro ao obter a resposta da requisição.";
	}
}Code language: PHP (php)


Comments

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *