Note importante
Cette documentation n'est pas nécessaire si vous utilisez l'API de mise à jour des licences logicielles. Référez-vous à ce document uniquement si vous n'utilisez pas le programme de mise à jour ou si c'est pour référence :
Consultez notre documentation sur la façon d'intégrer les mises à jour automatiques pour vos plugins WordPress.
Consultez notre documentation sur la façon d'intégrer les mises à jour automatiques pour vos thèmes WordPress.
Table des matières
Activation
Avec les Licences de logiciels, pour qu'une clé de licence soit pleinement utilisée, elle doit être activée. Cela peut se faire de l'une des deux manières suivantes :
- Un administrateur du site peut cliquer manuellement sur le lien « Activer » pour la licence depuis la page Téléchargements → Licences
- L'acheteur peut activer la licence à distance via un système dans votre plugin/thème/logiciel qui utilise l'API pour déclencher l'activation
Remarque : le plugin d'exemple et l'implémentation montrés dans ce document sont purement des exemples. Les meilleures implémentations des licences logicielles prennent ces exemples et les intègrent de manière transparente dans la page de paramètres existante de votre plugin.
Dans cette documentation, nous allons vous montrer comment activer une licence à distance via un système ajouté à votre plugin WordPress. Le code d'exemple que nous vous montrons dans cet exemple est le même code exact qui est inclus avec le plugin et les thèmes d'exemple, disponibles en téléchargement après l'achat de l'extension.
Il y a deux composantes principales pour activer une licence à distance :
- Enregistrer la clé de licence dans les données (une option de thème ou de plugin)
- Envoyer la clé de licence stockée via l'API au site du magasin pour vérification et activation
Lorsqu'une licence est activée à distance, le statut de la licence dans le tableau de bord de votre site sera mis à jour de « inactif » (l'état par défaut) à « actif ».
Examinons d'abord la création d'une page d'options simple pour stocker notre licence.
Ce code configure un élément de sous-menu dans le menu Plugins appelé « Licence du plugin ». Nous utilisons une page de plugins dans cet exemple, mais le code est identique pour les thèmes.
Il y a deux lignes en haut du code :
La première est la licence elle-même et la seconde est le statut de la licence. Une fois que nous aurons activé notre licence, nous changerons le statut (sur notre site local) à « actif ». Ceci afin de pouvoir afficher un bouton « Activer la licence » si la licence n'a pas encore été activée, et de masquer le bouton si elle l'a été. Voir la capture d'écran ci-dessous :

L'idée ici est que nous entrons d'abord une clé de licence et cliquons sur « Enregistrer les modifications », ce qui entraîne le stockage de la clé de licence dans les options de notre plugin/thème. Une fois l'option stockée, nous cliquons sur le bouton « Activer la licence » pour déclencher l'appel API.
Le bouton d’activation n’est qu’un simple champ de saisie avec un type « submit » et un attribut de nom différent de notre bouton d’enregistrement. Les noms *doivent* être différents afin que nous puissions savoir quand le bouton d’activation de la licence a été cliqué.
Afin d’activer la licence, nous devons simplement « surveiller » le moment où le bouton d’activation est cliqué. La façon dont nous procédons est en configurant une fonction qui est accrochée au hook « admin_init », comme suit :
Si tout se déroule correctement après avoir cliqué sur le bouton « Activer la licence », le bouton d’activation sera remplacé par le mot « activé », et le statut de la licence reflétera l’état nouvellement activé dans le tableau de bord de votre boutique Easy Digital Downloads. En cas d’erreur lors de l’activation de la clé de licence, la page sera rechargée et des paramètres d’erreur et de message seront ajoutés à l’URL. Nous pouvons alors utiliser le hook admin_notices (ou toute autre méthode applicable) pour afficher l’erreur au client :
Par exemple, si un client saisit une clé de licence invalide, un message d’erreur s’affichera :

Vérification
Avec Software Licensing, vous pouvez facilement vérifier si une clé de licence est valide à tout moment. Vous voudrez peut-être le faire afin de limiter certaines fonctionnalités du thème ou du plugin aux seuls utilisateurs disposant d’une clé de licence valide.
La vérification de la validité d’une clé de licence est assez simple ; il suffit d’effectuer une requête distante vers notre site Web de boutique avec quelques paramètres spécifiques. Voir la fonction ci-dessous :
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
}
}
Note : si vous vérifiez constamment la validité d’une clé de licence, peut-être pour bloquer l’utilisation du plugin ou du thème lorsque la licence expire, vous DEVEZ mettre en cache les résultats de la vérification afin que la requête ne soit pas effectuée à chaque chargement de page. L’API Transients API est un excellent moyen de mettre en cache les réponses de l’API.
Désactivation
Avec Software Licensing, après qu’une licence a été activée, elle peut également être désactivée à distance (depuis la v1.3). Habituellement, la raison de désactiver une licence est de permettre à une licence d’être activée sur un site supplémentaire une fois que la limite d’activation a été atteinte.
Le processus de désactivation est presque identique au processus d’activation. Nous effectuons une requête distante et envoyons les détails de la clé de licence que nous désactivons. La requête distante se fait comme suit :
// 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 variable $response sera un objet json qui nous indique si la demande de désactivation a réussi ou non. Si elle réussit, la réponse sera :
Note : La date/heure est un horodatage contrairement aux autres réponses json qui seront des dates/heures.
{
"success": true,
"license": "deactivated",
"item_name": "Sample Plugin",
"expires": 1556150399,
"payment_id": 2444,
"customer_name": "John Doe",
"customer_email": "[email protected]"
}
Si la licence ne parvient pas à être désactivée, la réponse sera :
{
"success": false,
"license": "failed",
"item_name": "Sample Plugin",
"expires": 1556150399,
"payment_id": 2444,
"customer_name": "John Doe",
"customer_email": "[email protected]"
}
Une fois qu’une licence a été désactivée avec succès, la colonne Nombre de sites dans Téléchargements → Licences sera décrémentée et une entrée sera enregistrée dans le journal afin que les administrateurs puissent voir d’où une licence a été désactivée.
