Using wp_remote_get keeps pinging the API on every page load. Which increase the server resource.
Is it possible to cache the response of the API store it using Transients and use it for next 5 minutes instead of keep pinging everytime?
And After 5 Minutes it should send request again and rewrite the stored value.
Here is my code for API Request. How to do this? I'm new to this. Help me please
function display_api_response() {
$api_url = ";;
$response = wp_remote_get($api_url);
if ( 200 === wp_remote_retrieve_response_code($response) ) {
$body = wp_remote_retrieve_body($response);
if ( 'a' === $body ) {
echo 'A wins';
}else {
// Do something else.
}
}
}
add_action( 'init', 'display_api_response' );
Using wp_remote_get keeps pinging the API on every page load. Which increase the server resource.
Is it possible to cache the response of the API store it using Transients and use it for next 5 minutes instead of keep pinging everytime?
And After 5 Minutes it should send request again and rewrite the stored value.
Here is my code for API Request. How to do this? I'm new to this. Help me please
function display_api_response() {
$api_url = "https://randletter2020.herokuapp";
$response = wp_remote_get($api_url);
if ( 200 === wp_remote_retrieve_response_code($response) ) {
$body = wp_remote_retrieve_body($response);
if ( 'a' === $body ) {
echo 'A wins';
}else {
// Do something else.
}
}
}
add_action( 'init', 'display_api_response' );
Share
Improve this question
asked Oct 12, 2020 at 18:38
Ava JuanAva Juan
152 bronze badges
0
1 Answer
Reset to default 1function display_api_response() {
$body = get_transient( 'my_remote_response_value' );
if ( false === $body ) {
$api_url = "https://randletter2020.herokuapp";
$response = wp_remote_get($api_url);
if (200 !== wp_remote_retrieve_response_code($response)) {
return;
}
$body = wp_remote_retrieve_body($response);
set_transient( 'my_remote_response_value', $body, 5*MINUTE_IN_SECONDS );
}
if ('a' === $body) {
echo 'A wins';
} else {
// Do something else.
}
}
add_action('init', 'display_api_response');
At first, the transient doesn't exist, so we send a request and save the $body
as a transient value. Next time, if the transient exists, we skip sending request.
Check the Transient Handbook for more information.