namespace Elementor\Core\Utils;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
class Http extends \WP_Http {
* Pass multiple urls to implements a fallback machine when one of the urls
* is sending an error or not exists anymore.
* @return array|\WP_Error|null
public function request_with_fallback( array $urls, $args = [] ) {
foreach ( $urls as $url ) {
$response = $this->request( $url, $args );
if ( $this->is_successful_response( $response ) ) {
private function is_successful_response( $response ) {
if ( is_wp_error( $response ) ) {
$response_code = (int) wp_remote_retrieve_response_code( $response );
if ( in_array( $response_code, [ 0, 404, 500 ], true ) ) {