Come verificare il meccanismo di trasporto corretto durante l'attivazione di un plugin?
Per un plugin che comunica con servizi esterni, ho sentito che dovremmo usare wp_remote_post e wp_remote_get invece della libreria Curl di PHP.
Ok, ma esiste un modo rapido e corretto per verificare, durante l'esecuzione del plugin, che il blog/host PHP abbia il meccanismo di trasporto corretto installato? Potrei tentare un POST di test, ma pensavo che WP potesse avere un meccanismo migliore e più veloce per verificare? Fare quanto segue non è accettabile:
if (!function_exists('curl_exec')) {
wp_die('L\'API CURL non è installata con PHP. Non puoi usare questo plugin senza di essa. Chiedi al tuo provider di hosting web di installarla.');
}

Non farei morire il plugin in quel modo. Basta verificare la presenza di cURL ogni volta che devi effettuare una chiamata o ricadere su wp_remote_(post|get)
(ad esempio, scrivere una funzione wrapper che si occupa del controllo e invia i dati/header che desideri).
MA, se davvero vuoi disabilitare il plugin se cURL non è installato, puoi usare un hook di attivazione per verificare la presenza della funzione curl_exec
e disattivare il plugin in caso contrario.
<?php
register_activation_hook(__FILE__, 'wpse51312_activation');
function wpse51312_activation()
{
if(!function_exists('curl_exec'))
{
// Disattiva il plugin
deactivate_plugins(__FILE__);
// Mostra la pagina di errore, forse non dovrebbe accadere?
wp_die(
__('È necessario abilitare il supporto cURL per utilizzare INSERT PLUGIN NAME'),
__('Errore')
);
}
}
Per quel che vale, credo che l'API HTTP tenti di utilizzare cURL se disponibile.

Sì, in questo caso ho scoperto che die() è meglio di wp_die() se eseguito durante l'attivazione del plugin. Comunque, wp_remote_post non utilizza sempre Curl. Su alcuni host, curl_exec() è disabilitato, mentre file_get_contents() o fopen() con un host remoto potrebbero essere abilitati.

Tuttavia, la vera domanda è che voglio solo un modo rapido per testare la possibilità di fallimento con wp_remote_post() perché nessuno dei meccanismi di trasporto potrebbe essere abilitato. Verificare semplicemente le funzionalità Curl non sarà sufficiente.
