Cum verific mecanismul de transport corect la activarea unui plugin WordPress?

6 mai 2012, 16:28:43
Vizualizări: 911
Voturi: 1

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.');
}
0
Toate răspunsurile la întrebare 1
3

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.

6 mai 2012 17:06:14
Comentarii

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.

Volomike Volomike
6 mai 2012 19:44:43

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ă.

Volomike Volomike
6 mai 2012 19:45:40

Singura modalitate de a vedea dacă se întâmplă acest lucru este prin efectuarea unei cereri. wp_remote_post va returna un obiect WP_Error dacă eșuează.

chrisguitarguy chrisguitarguy
6 mai 2012 20:17:14