Cómo verificar el mecanismo de transporte adecuado al activar un plugin
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.');
}

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.

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.

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.
