Notă Importantă
Această documentație nu este necesară dacă folosiți Software Licensing API Updater. Consultați acest document doar dacă nu folosiți updaterul sau dacă este pentru referință:
Vedeți documentația noastră despre cum să integrați actualizări automate pentru pluginurile WordPress.
Vedeți documentația noastră despre cum să integrați actualizări automate pentru temele WordPress.
Cuprins
Activare
Cu Licențiere Software, pentru ca o cheie de licență să fie utilizată pe deplin, aceasta trebuie activată. Acest lucru se poate întâmpla în una din următoarele două moduri:
- Un administrator de site poate face clic manual pe linkul „Activate” pentru licență din pagina Downloads → Licenses
- Cumpărătorul poate activa licența de la distanță printr-un sistem din pluginul/tema/software-ul dvs. care utilizează API-ul pentru a declanșa activarea
Notă: pluginul exemplu și implementarea prezentată în acest document sunt pur exemplificative. Cele mai bune implementări ale Licențierii Software preiau aceste exemple și le integrează perfect în pagina de setări existentă a pluginului dvs.
În această documentație, vă vom arăta cum să activați o licență de la distanță printr-un sistem adăugat la pluginul dvs. WordPress. Codul exemplu pe care vi-l arătăm în acest exemplu este același cod exact care este inclus cu pluginul și temele exemplu, disponibile pentru descărcare după achiziționarea extensiei.
Există două componente principale pentru activarea unei licențe de la distanță:
- Salvarea cheii de licență în date (o opțiune a temei sau a pluginului)
- Trimiterea cheii de licență stocate prin API către site-ul magazinului pentru verificare și activare
Când o licență este activată de la distanță, starea licenței din tabloul de bord al site-ului dvs. va fi actualizată de la „inactivă” (starea implicită) la „activă”.
Să ne uităm mai întâi la crearea unei pagini simple de opțiuni pentru a stoca licența noastră.
Acest cod configurează un element de sub-meniu în meniul Pluginuri numit „Licență Plugin”. Folosim o pagină de pluginuri în acest exemplu, dar codul este identic pentru teme.
Există două linii în partea de sus a codului:
Prima este licența în sine, iar a doua este starea licenței. Odată ce am activat licența, vom schimba starea (pe site-ul nostru local) în „activă”. Acest lucru este pentru a putea afișa un buton „Activate License” dacă licența nu a fost încă activată și a ascunde butonul dacă a fost. Vezi captura de ecran de mai jos:

Ideea aici este că mai întâi introducem o cheie de licență și facem clic pe „Save Changes”, ceea ce face ca cheia de licență să fie stocată în opțiunile pluginului/temei noastre. Odată ce opțiunea este stocată, facem clic pe butonul „Activate License” pentru a declanșa apelul API.
Butonul de activare este doar un câmp de intrare simplu cu un tip „submit” și un atribut de nume care este diferit de butonul nostru de salvare. Numele *trebuie* să fie diferite, astfel încât să putem ști când a fost apăsat butonul de activare a licenței.
Pentru a activa licența, trebuie doar să „urmărim” momentul în care este apăsat butonul de activare. Modul în care facem acest lucru este prin configurarea unei funcții care este conectată la hook-ul „admin_init”, astfel:
Dacă totul funcționează corect după apăsarea butonului „Activate License”, butonul de activare va fi înlocuit cu cuvântul „active”, iar starea licenței va reflecta starea nou activată în tabloul de bord al magazinului dvs. EDD. Dacă există o eroare la activarea cheii de licență, pagina va fi reîncărcată și un parametru de eroare și mesaj va fi adăugat la URL. Putem apoi folosi hook-ul admin_notices (sau orice altă metodă aplicabilă) pentru a afișa eroarea clientului:
De exemplu, dacă un client introduce o cheie de licență invalidă, va fi afișată o mesaj de eroare:

Verificare
Cu Software Licensing puteți verifica cu ușurință dacă o cheie de licență este validă în orice moment. Ați putea dori să faceți acest lucru pentru a limita anumite funcționalități din temă sau plugin doar la utilizatorii cu o cheie de licență validă.
Verificarea validității unei chei de licență este destul de simplă; tot ce necesită este să efectuăm o cerere la distanță către site-ul nostru de magazin cu câțiva parametri specifici. Vezi funcția de mai jos:
function edd_sample_theme_check_license() {
$store_url = 'https://yoursite.com';
$item_name = 'Your Item Name';
$license = '834bbb2d27c02eb1ac11f4ce6ffa20bb';
$api_params = array(
'edd_action' => 'check_license',
'license' => $license,
'item_name' => urlencode( $item_name ),
'url' => home_url(),
'environment' => function_exists( 'wp_get_environment_type' ) ? wp_get_environment_type() : 'production',
);
$response = wp_remote_post( $store_url, array( 'body' => $api_params, 'timeout' => 15, 'sslverify' => true ) );
if ( is_wp_error( $response ) ) {
return false;
}
$license_data = json_decode( wp_remote_retrieve_body( $response ) );
if( $license_data->license == 'valid' ) {
echo 'valid';
exit;
// this license is still valid
} else {
echo 'invalid';
exit;
// this license is no longer valid
}
}
Notă: dacă verificați în mod constant validitatea unei chei de licență, poate pentru a bloca utilizarea pluginului sau a temei atunci când licența expiră, TREBUIE să puneți în cache rezultatele verificării, astfel încât cererea să nu fie efectuată la fiecare încărcare de pagină. Transients API este o modalitate excelentă de a pune în cache răspunsurile API.
Dezactivare
Cu Software Licensing, după ce o licență a fost activată, aceasta poate fi dezactivată și de la distanță (începând cu versiunea 1.3). De obicei, motivul dezactivării unei licențe este de a permite activarea unei licențe pe un site suplimentar odată ce limita de activare a fost atinsă.
Procesul de dezactivare este aproape identic cu procesul de activare. Efectuăm o cerere la distanță și trimitem detaliile cheii de licență pe care o dezactivăm. Cererea la distanță se face astfel:
// data to send in our API request
$api_params = array(
'edd_action' => 'deactivate_license',
'license' => '2ec66bae356be570236531ccba06a45b',
'item_name' => 'Sample Plugin', // the name of our product in EDD
'url' => home_url(),
'environment' => function_exists( 'wp_get_environment_type' ) ? wp_get_environment_type() : 'production',
);
// Send the remote request
$response = wp_remote_post( 'https://yoursite.com', array( 'body' => $api_params, 'timeout' => 15, 'sslverify' => true ) );
Variabila $response va fi un obiect json care ne spune dacă cererea de dezactivare a avut succes sau nu. Dacă are succes, răspunsul va fi:
Notă: Data/ora este un timestamp, spre deosebire de alte răspunsuri json care vor fi data și ora.
{
"success": true,
"license": "deactivated",
"item_name": "Sample Plugin",
"expires": 1556150399,
"payment_id": 2444,
"customer_name": "John Doe",
"customer_email": "[email protected]"
}
Dacă licența nu poate fi dezactivată, răspunsul va fi:
{
"success": false,
"license": "failed",
"item_name": "Sample Plugin",
"expires": 1556150399,
"payment_id": 2444,
"customer_name": "John Doe",
"customer_email": "[email protected]"
}
Odată ce o licență a fost dezactivată cu succes, coloana Site Count din Downloads → Licenses va fi decrementată și o intrare va fi înregistrată în jurnal, astfel încât administratorii să poată vedea de unde a fost dezactivată o licență.
