Cum verific mecanismul de transport corect la activarea unui plugin WordPress?
Pentru un plugin care comunică cu o sursă externă, am auzit că ar trebui să folosim wp_remote_post și wp_remote_get în loc de biblioteca Curl din PHP.
Bine, dar există o metodă rapidă și corectă de a verifica dacă PHP/sistemul de operare al gazdei are mecanismul de transport necesar instalat? Aș putea încerca un POST de test, dar m-am gândit că WP ar putea avea un mecanism mai bun și mai rapid pe care să-l pot verifica? Următoarea abordare este inacceptabilă:
if (!function_exists('curl_exec')) {
wp_die('API-ul CURL nu este instalat în PHP. Nu poți utiliza acest plugin fără el. Cere furnizorului tău de hosting să îl instaleze.');
}

Nu aș face ca plugin-ul să se dezactiveze în acest fel. Doar verifică dacă cURL este disponibil de fiecare dată când ai nevoie să faci un apel sau folosește wp_remote_(post|get)
(de exemplu, scrie o funcție wrapper care se ocupă de verificare și trimite datele/headerele dorite).
DAR, dacă chiar vrei să dezactivezi plugin-ul dacă cURL nu este instalat, poți folosi un activation hook pentru a verifica funcția curl_exec
și a dezactiva plugin-ul dacă nu este disponibilă.
<?php
register_activation_hook(__FILE__, 'wpse51312_activation');
function wpse51312_activation()
{
if(!function_exists('curl_exec'))
{
// Dezactivează plugin-ul
deactivate_plugins(__FILE__);
// Afișează pagina de eroare, Poate nu ar trebui să se întâmple asta?
wp_die(
__('Trebuie să activezi suportul pentru cURL pentru a utiliza INSERT PLUGIN NAME'),
__('Eroare')
);
}
}
Pentru ceea ce valorează, cred că API-ul HTTP încearcă să folosească cURL dacă este disponibil.

Da, am descoperit în acest caz că die() este mai bun decât wp_die() dacă este folosit la activarea pluginului. Dar oricum, wp_remote_post nu utilizează întotdeauna Curl. Pe unele gazde, curl_exec() este dezactivat, în timp ce file_get_contents() sau fopen() cu un gazdă la distanță pot fi activate.

Totuși, întrebarea reală este că vreau doar o metodă rapidă de a testa posibilitatea de eșec cu wp_remote_post() deoarece niciunul dintre mecanismele de transport ar putea să nu fie activat. Verificarea simplă a funcționalităților Curl nu va fi suficientă.
