Cómo usar HTTP Requests en WordPress: Guía práctica con ejemplos

Cuando desarrollamos plugins o temas para WordPress, es común tener que conectarse a servicios externos para obtener o enviar información. Esto se hace mediante HTTP requests o solicitudes HTTP. En este artículo te explicamos qué son, cómo funcionan en WordPress y te mostramos ejemplos prácticos para que los apliques en tus proyectos.

 

¿Qué es una HTTP request?

Una HTTP request es una petición que hace tu sitio web a otro servidor. Por ejemplo, si tu plugin necesita mostrar el clima, podría enviar una solicitud a una API meteorológica como OpenWeatherMap y obtener la respuesta en formato JSON.

En WordPress, esto se puede hacer fácilmente usando funciones como wp_remote_get()y wp_remote_post().

 

¿Por qué usar las funciones nativas de WordPress?

Aunque podrías usar cURL o file_get_contents(), WordPress ya incluye su propio sistema HTTP que es:

  • Compatible con varios entornos (cURL, fopen, fsockopen, etc.).
  • Seguro (maneja errores, redirecciones, SSL, etc.).
  • Fácil de usar.

 

Cómo hacer un GET request en WordPress

El método GET se usa para obtener información de un servidor externo. Por ejemplo, obtener datos de una API.

Ejemplo:

<?php
function getWeatherData() {
    $apiUrl     = 'https://api.openweathermap.org/data/2.5/weather?q=Lima,PE&appid=TU_API_KEY&units=metric';
    $response   = wp_remote_get( $apiUrl );

    if ( is_wp_error( $response ) ) {
        return 'Error al obtener datos del clima.';
    }

    $body       = wp_remote_retrieve_body( $response );
    $data       = json_decode( $body, true );

    if ( isset( $data['main']['temp'] ) ) {
        return 'Temperatura actual: ' . $data['main']['temp'] . '°C';
    }

    return 'Datos del clima no disponibles.';
}

Puedes usar esta función en un shortcode o hook para mostrar el clima en tu sitio.

 

Cómo hacer un POST request en WordPress

El método POST se usa para enviar datos a un servidor, por ejemplo, para enviar formularios o crear un recurso en una API.

Ejemplo:

<?php
function sendContactData() {
    $apiUrl   = 'https://ejemplo.com/api/contacto';
    $payload  = [
        'name'    => 'Juan Pérez',
        'email'   => 'juan@correo.com',
        'message' => 'Hola, quiero más información.'
    ];

    $response = wp_remote_post( $apiUrl, [
        'body'    => json_encode( $payload ),
        'headers' => [
            'Content-Type' => 'application/json',
        ],
    ]);

    if ( is_wp_error( $response ) ) {
        return 'No se pudo enviar el mensaje.';
    }

    $body = wp_remote_retrieve_body( $response );
    return 'Respuesta del servidor: ' . $body;
}

 

Cómo manejar errores correctamente

Es muy importante validar la respuesta con is_wp_error()antes de procesarla, para evitar que tu plugin falle si hay problemas de red o con el servidor remoto.

También puedes obtener más detalles del error:

<?php
if ( is_wp_error( $response ) ) {
    $errorMessage = $response->get_error_message();
    return 'Error: ' . $errorMessage;
}

 

Agregar autenticación (Bearer Token)

Si tu API requiere autenticación, puedes agregar un encabezado personalizado:

<?php
function getPrivateData() {
    $apiUrl   = 'https://api.privada.com/datos';
    $token    = 'TU_TOKEN_AQUI';

    $response = wp_remote_get( $apiUrl, [
        'headers' => [
            'Authorization' => 'Bearer ' . $token,
        ],
    ]);

    if ( is_wp_error( $response ) ) {
        return 'Error al acceder a los datos.';
    }

    return wp_remote_retrieve_body( $response );
}

 

¿Dónde usar estas funciones?

Puedes usar wp_remote_get()y wp_remote_post()en:

  • Shortcodes personalizados.
  • Funciones de tus plugins.
  • Hooks como wp_ajax_ o rest_api_init.
  • Cron jobs (wp_schedule_event()).

 

Las HTTP requests te permiten integrar tu sitio WordPress con otros servicios fácilmente. Gracias a las funciones nativas de WordPress, no necesitas depender de bibliotecas externas ni complicarte con cURL.

Ya sea que quieras consumir una API, enviar datos o autenticar usuarios, wp_remote_get()y wp_remote_post()te dan las herramientas necesarias para hacerlo de forma segura y sencilla.

 

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Back to Top
0
Would love your thoughts, please comment.x
()
x