Nota importante
Questa documentazione non è necessaria se si utilizza l'aggiornatore API di Gestione Licenze Software. Fare riferimento a questo documento solo se non si utilizza l'aggiornatore o se è a scopo di consultazione:
Vedi la nostra documentazione su come integrare gli aggiornamenti automatici per i tuoi plugin WordPress.
Vedi la nostra documentazione su come integrare gli aggiornamenti automatici per i tuoi temi WordPress.
Indice dei contenuti
Attivazione
Con Gestione Licenze Software, affinché una chiave di licenza sia pienamente utilizzata, deve essere attivata. Ciò può avvenire in uno dei seguenti modi:
- Un amministratore del sito può fare clic manualmente sul link "Attiva" per la licenza dalla pagina Download → Licenze
- L'acquirente può attivare la licenza da remoto tramite un sistema nel tuo plugin/tema/software che utilizza l'API per attivare l'attivazione
Nota: il plugin di esempio e l'implementazione mostrati in questo documento sono puramente esempi. Le migliori implementazioni di Gestione Licenze Software prendono questi esempi e li integrano perfettamente nella pagina delle impostazioni esistente del tuo plugin.
In questa documentazione, ti mostreremo come attivare una licenza da remoto tramite un sistema aggiunto al tuo plugin WordPress. Il codice di esempio che ti mostriamo in questo esempio è lo stesso codice esatto incluso nel plugin e nei temi di esempio, disponibili per il download dopo l'acquisto dell'estensione.
Ci sono due componenti principali per attivare una licenza da remoto:
- Salvare la chiave di licenza nei dati (un'opzione del tema o del plugin)
- Inviare la chiave di licenza memorizzata tramite API al sito web dello store per la verifica e l'attivazione
Quando una licenza viene attivata da remoto, lo stato della licenza nella dashboard del tuo sito verrà aggiornato da "inattivo" (lo stato predefinito) ad "attivo".
Diamo prima un'occhiata alla creazione di una semplice pagina delle opzioni per memorizzare la nostra licenza.
Questo codice imposta una voce di sottomenu nel menu Plugin chiamata "Licenza Plugin". Stiamo usando una pagina dei plugin in questo esempio, ma il codice è identico per i temi.
Ci sono due righe in cima al codice:
La prima è la licenza stessa e la seconda è lo stato della licenza. Una volta attivata la nostra licenza, cambieremo lo stato (sul nostro sito locale) in "attivo". Questo serve a mostrare un pulsante "Attiva Licenza" se la licenza non è ancora stata attivata, e nascondere il pulsante se lo è. Vedi lo screenshot qui sotto:

L'idea qui è che prima inseriamo una chiave di licenza e facciamo clic su "Salva Modifiche", il che causa la memorizzazione della chiave di licenza nelle opzioni del nostro plugin/tema. Una volta memorizzata l'opzione, facciamo clic sul pulsante "Attiva Licenza" per attivare la chiamata API.
Il pulsante di attivazione è solo un semplice campo di input con un tipo "submit" e un attributo name diverso dal nostro pulsante di salvataggio. I nomi *devono* essere diversi in modo da poter sapere quando è stato fatto clic sul pulsante di attivazione della licenza.
Per attivare la licenza, dobbiamo solo "osservare" quando viene cliccato il pulsante di attivazione. Il modo in cui lo facciamo è impostando una funzione agganciata al hook "admin_init", in questo modo:
Se tutto funziona correttamente dopo aver cliccato il pulsante "Attiva Licenza", il pulsante di attivazione verrà sostituito dalla parola "attiva" e lo stato della licenza rifletterà lo stato appena attivato nella dashboard del tuo negozio EDD. Se si verifica un errore durante l'attivazione della chiave di licenza, la pagina verrà ricaricata e verranno aggiunti alla URL i parametri error e message. Possiamo quindi utilizzare il hook admin_notices (o qualsiasi altro metodo applicabile) per visualizzare l'errore al cliente:
Ad esempio, se un cliente inserisce una chiave di licenza non valida, verrà visualizzato un messaggio di errore:

Verifica
Con Software Licensing puoi verificare facilmente se una chiave di licenza è valida in qualsiasi momento. Potresti volerlo fare per limitare determinate funzionalità nel tema o nel plugin solo agli utenti con una chiave di licenza valida.
Verificare la validità di una chiave di licenza è abbastanza semplice; tutto ciò che richiede è che eseguiamo una richiesta remota al sito del nostro negozio con un paio di parametri specifici. Vedi la funzione qui sotto:
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
}
}
Nota: se verifichi costantemente la validità di una chiave di licenza, magari per bloccare l'uso del plugin o del tema quando la licenza scade, DEVI memorizzare nella cache i risultati del controllo in modo che la richiesta non venga eseguita ad ogni caricamento della pagina. La Transients API è un ottimo modo per memorizzare nella cache le risposte API.
Disattivazione
Con Software Licensing, dopo che una licenza è stata attivata, può anche essere disattivata da remoto (dalla versione 1.3). Di solito, il motivo per disattivare una licenza è permettere l'attivazione di una licenza su un sito aggiuntivo una volta raggiunto il limite di attivazioni.
Il processo di disattivazione è quasi identico al processo di attivazione. Eseguiamo una richiesta remota e inviamo i dettagli della chiave di licenza che stiamo disattivando. La richiesta remota viene effettuata in questo modo:
// 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 ) );
La variabile $response sarà un oggetto json che ci dice se la richiesta di disattivazione ha avuto successo o meno. Se ha successo, la risposta sarà:
Nota: La data/ora è un timestamp a differenza di altre risposte json che saranno data/ora.
{
"success": true,
"license": "deactivated",
"item_name": "Sample Plugin",
"expires": 1556150399,
"payment_id": 2444,
"customer_name": "John Doe",
"customer_email": "[email protected]"
}
Se la licenza non viene disattivata con successo, la risposta sarà:
{
"success": false,
"license": "failed",
"item_name": "Sample Plugin",
"expires": 1556150399,
"payment_id": 2444,
"customer_name": "John Doe",
"customer_email": "[email protected]"
}
Una volta che una licenza è stata disattivata con successo, la colonna Site Count in Download → Licenze verrà decrementata e verrà registrata una voce nel log in modo che gli amministratori possano vedere da dove è stata disattivata una licenza.
