Cómo verificar el mecanismo de transporte adecuado al activar un plugin

6 may 2012, 16:28:43
Vistas: 911
Votos: 1

Para un plugin que se comunica con otro lugar, escuché que debemos usar wp_remote_post y wp_remote_get en lugar de la biblioteca Curl de PHP.

Está bien, pero ¿existe una forma rápida y adecuada durante la ejecución del plugin para verificar si el PHP/host OS del blog tiene instalado el mecanismo de transporte adecuado? Quiero decir, podría intentar un POST de prueba, pero pensé que WP podría tener un mecanismo mejor y más rápido que pueda verificar. Hacer lo siguiente es inaceptable:

if (!function_exists('curl_exec')) {
    wp_die('La API CURL no está instalada con PHP. No puedes usar este plugin sin eso. Pide a tu proveedor de alojamiento web que lo instale.');
}
0
Todas las respuestas a la pregunta 1
3

No haría que el plugin falle de esa manera. Simplemente verifica cURL cada vez que necesites hacer una llamada o recurre a wp_remote_(post|get) (por ejemplo, escribe una función envoltorio que se encargue de la verificación y envíe los datos/encabezados que desees).

PERO, si realmente deseas desactivar el plugin si cURL no está instalado, puedes usar un hook de activación para verificar la función curl_exec y desactivar el plugin si no está disponible.

<?php
register_activation_hook(__FILE__, 'wpse51312_activation');
function wpse51312_activation()
{
    if(!function_exists('curl_exec'))
    {
        // Desactiva el plugin
        deactivate_plugins(__FILE__);

        // Muestra la página de error, ¿Quizás esto no debería ocurrir?
        wp_die(
            __('Debes habilitar el soporte de cURL para usar INSERTAR NOMBRE DEL PLUGIN'),
            __('Error')
        );
    }
}

Para lo que valga, creo que la API HTTP intenta usar cURL si está disponible.

6 may 2012 17:06:14
Comentarios

Sí, encontré que en este caso die() es mejor que wp_die() si se hace en la activación del plugin. Pero de cualquier forma, wp_remote_post no siempre usa Curl. En algunos hosts, curl_exec() está deshabilitado, mientras que file_get_contents() o fopen() con un host remoto pueden estar habilitados.

Volomike Volomike
6 may 2012 19:44:43

Sin embargo, la verdadera pregunta es que solo quiero una forma rápida de probar la posibilidad de falla con wp_remote_post() porque ninguno de los mecanismos de transporte podría estar habilitado. Simplemente verificar cosas de Curl no será suficiente.

Volomike Volomike
6 may 2012 19:45:40

La única forma en que vas a ver si eso sucede es haciendo una solicitud. wp_remote_post devolverá un objeto WP_Error si falla.

chrisguitarguy chrisguitarguy
6 may 2012 20:17:14