Table des matières
Tout comme le cœur d'Easy Digital Downloads, l'extension Software Licensing inclut une variété de hooks d'action et de filtre que vous pouvez utiliser pour ajuster le comportement de l'extension afin de mieux répondre à vos besoins. Cette documentation est écrite pour les utilisateurs avancés qui connaissent déjà l'API des plugins WordPress.
Création de licence
Durée de la licence
Par défaut, chaque clé de licence reçoit une date d'expiration d'un an. Cette durée d'expiration peut être facilement modifiée en utilisant le filtre edd_sl_license_exp_length. Quatre paramètres sont passés au filtre :
- $length (string) – La durée d'expiration de cette licence. « +1 year » est la valeur par défaut
- $payment_id (int) – L'ID du paiement avec lequel cette licence a été générée
- $download_id (int) – L'ID du téléchargement/produit auquel cette licence est connectée
- $license_id (int) L'ID de la licence nouvellement créée
Voici un exemple rapide de la façon dont vous pourriez modifier la durée d'expiration :
function pw_edd_sl_license_length( $length, $payment_id, $download_id, $license_id ) {
return '+2 years'; // set length to two years from creation date
}
add_filter( 'edd_sl_license_exp_length', 'pw_edd_sl_license_length', 10, 4 );
Exécuter des fonctions après la création de la licence
L'action edd_sl_store_license est déclenchée juste après la création de la clé de licence et l'attachement de toutes ses métadonnées. L'action prend trois paramètres :
- $license_id (int) – L'ID de la licence nouvellement créée
- $download_id (int) – L'ID du téléchargement/produit auquel cette licence est connectée
- $payment_id (int) – L'ID du paiement avec lequel cette licence a été créée
Une fonction exemple que vous pourriez attacher à cette action pourrait ressembler à ceci :
function pw_edd_sl_custom_admin_alert( $license_id, $download_id, $payment_id ) {
// send admin alert
wp_mail( get_bloginfo( 'admin_email' ), 'License Created', 'A new license key with the ID of ' . $license_id . ' has been created.' );
}
add_action( 'edd_sl_store_license', 'pw_edd_sl_custom_function', 10, 3 );
Exécuter des fonctions pendant l'activation de la licence
L'action edd_sl_activate_license s'exécute juste après l'activation d'une licence via l'API.
do_action( 'edd_sl_activate_license', $license_id, $download_id );
Exécuter des fonctions pendant la vérification de la licence
L'action edd_sl_check_license s'exécute juste après la vérification d'une licence via l'API.
do_action( 'edd_sl_activate_license', $license_id, $download_id );
Autres filtres
edd_sl_license_response – appliqué à la réponse envoyée lors de la vérification à distance de la version d'un téléchargement/produit.
edd_sl_get_license_logs – appliqué lorsque les entrées de journal pour une licence sont récupérées.
edd_sl_encoded_package_url – appliqué lorsque l'URL du package encodé pour les packages de téléchargement est récupérée.
edd_sl_download_package_url – appliqué lorsque le fichier du package de téléchargement pour les mises à jour automatiques est récupéré.
edd_license_labels – appliqué aux étiquettes du type de publication lors de l'enregistrement du type de publication edd_license.
Autres actions
edd_sl_before_package_download – s'exécute juste avant que le fichier de téléchargement pour les mises à niveau automatiques ne soit servi au navigateur.
La version 3.5 et ultérieures de Software Licensing inclut une classe EDD_SL_License pour interagir avec les enregistrements de clés de licence. La classe EDD_SL_License vous permet d'interagir avec les données de clés de licence, de mettre à jour les clés de licence existantes et de créer de nouveaux enregistrements de clés de licence.
Instanciation d'objets
Pour améliorer les performances lors de l'accès à un objet de licence, vous devez utiliser la méthode wrapper, qui utilise la couche de mise en cache d'objets du noyau WordPress. Vous pouvez utiliser l'ID de licence ou la clé de licence pour instancier un objet. Si aucune licence n'existe pour les informations fournies, la méthode wrapper retournera `false` :
// Instantiate a license via ID $license = edd_software_licensing()->get_license( 2326422 ); // Instantiate a license via the license key $license_by_key = edd_software_licensing->get_license( '9e21e9a885212f96cccb4d6186541332', true ); // If you pass in an invalid license ID or key you will get 'false' as a response. $invalid_license = edd_software_licensing()->get_license( -1 );
EDD_SL_License peut être instancié avec un ID de licence ou aucune valeur lors de la création d'une nouvelle licence. Voici quelques exemples :
$license = new EDD_SL_License( 2326422 );
Si vous souhaitez créer une nouvelle licence :
$license = new EDD_SL_License(); $license->create( $download_id = 0, $payment_id = 0, $price_id = false, $cart_index = 0, $options = array() );
Bien que vous puissiez instancier directement une licence avec EDD_SL_License, il est préférable d'utiliser la fonction wrapper pour des raisons de performance.
Les arguments nécessaires pour créer une nouvelle licence seront abordés ci-dessous.
Propriétés disponibles
La classe EDD_SL_License comprend de nombreuses propriétés accessibles qui contiennent des informations relatives à l'enregistrement de la clé de licence.
- ID – Le numéro d'identification de l'enregistrement de licence. Ceci correspond à l'ID de l'objet WP_Post.
- parent – L'ID du post de la licence parente, le cas échéant.
- name – Le nom de la licence. Il s'agit d'une concaténation de l'adresse e-mail du client et du nom du produit auquel la clé de licence est associée.
- key – La clé de licence elle-même. Il s'agit généralement d'une chaîne de 32 caractères, mais cela peut être n'importe quoi.
- user_id – L'ID du WP_User auquel la clé de licence appartient, le cas échéant.
- customer_id – L'ID du EDD_Customer auquel la licence appartient.
- payment_id – L'ID du EDD_Payment pour lequel la licence a été créée.
- payment_ids – Un tableau d'ID de paiement liés à la licence. Comprend les renouvellements et les mises à niveau.
- cart_index – L'index numérique dans le tableau des articles du panier du produit auquel la clé de licence est associée.
- download – Une instance EDD_SL_Download du produit de téléchargement auquel la clé de licence est associée.
- download_id – L'ID du post du produit de téléchargement auquel la clé de licence est associée.
- price_id – L'ID de l'option de prix du produit de téléchargement attribué à la clé de licence.
- activation_limit – Le nombre d'URL / machines uniques sur lesquels la clé de licence peut être activée.
- sites – Un tableau des URL de site (ou ID de machine) sur lesquels la clé de licence est activée.
- activation_count – Le nombre d'URL / machines uniques sur lesquels la clé de licence est actuellement activée.
- expiration – La date d'expiration de la clé de licence.
- is_lifetime – Indicateur booléen indiquant si la licence est une licence à vie (n'expire jamais).
- status – Le statut actuel de la licence (active, inactive, expirée).
- post_status – Le post_status de l'objet WP_Post pour la licence.
- child_licenses – Un tableau de clés de licence enfant, le cas échéant.
Chaque propriété peut être accédée directement, comme ceci :
// Access the price ID of the license $price_id = $license->price_id;
Chaque propriété peut également être mise à jour en définissant la valeur de la propriété, comme ceci :
// Set the license activation limit $license->activation_limit = 100;
Les modifications apportées aux propriétés de l'objet seront enregistrées immédiatement sans qu'il soit nécessaire d'appeler une méthode d'enregistrement ou de mise à jour.
Méthodes disponibles
La classe EDD_SL_License inclut des méthodes publiques pour accéder aux propriétés de l'objet et plusieurs autres méthodes d'aide qui peuvent être utilisées pour accéder et interagir avec les données de licence.
$license->create( $download_id = 0, $payment_id = 0, $price_id = false, $cart_index = 0, $options = array() )
Cette méthode vous permet de créer un nouvel enregistrement de licence pour un produit de téléchargement et un enregistrement de paiement existants.
- $download_id – Doit être l'ID d'un produit de téléchargement existant
- $payment_id – Doit être l'ID d'un enregistrement de paiement existant qui incluait un achat de $download_id
- $price_id – Il s'agit d'un ID de prix facultatif pour $download_id si les prix variables sont activés
- $cart_index – Il s'agit d'un index d'article de panier facultatif qui identifie exactement à quel article de panier cette licence correspond
- $options – An array of options for the license. Can include the following keys
- parent_license_id
- activation_limit
- license_length
- expiration_date
- is_lifetime
La méthode create() peut être utilisée pour créer une nouvelle clé de licence mais ne sera généralement pas utilisée manuellement, sauf dans des implémentations très personnalisées.
$license->update( $data = array() )
Cette méthode vous permet de mettre à jour les métadonnées d'une licence en masse. Le tableau $data doit être une paire clé/valeur de meta_key/meta_value.
$license->renew()
Cette méthode déclenchera le renouvellement d'une clé de licence, prolongeant la date d'expiration d'une période et réinitialisant le statut de la licence à inactive ou active.
$license->enable()
Cette méthode réactivera une clé de licence désactivée.
$license->disable()
Cette méthode désactivera une clé de licence.
$license->get_meta( $meta_key = ”, $single = true )
Cette méthode récupérera les métadonnées d'une licence.
$license->update_meta( $meta_key = ”, $value = ”, $old_value = ” )
Cette méthode mettra à jour les métadonnées d'une licence.
$license->get_renewal_url()
Cette méthode récupérera l'URL de renouvellement d'une licence.
$license->is_site_active( $url )
Cette méthode déterminera si l'URL fournie est enregistrée sur la licence.
$license->is_at_limit()
Cette méthode vérifiera si la licence a atteint sa limite d'activation.
$license->license_length()
Cette méthode retournera la durée d'une période pour la licence, telle que à vie ou +1 an.
$license->add_site( $url )
Cette méthode peut être utilisée pour enregistrer une nouvelle URL de site sur une licence.
$license->remove_site( $url )
Cette méthode peut être utilisée pour supprimer une URL de site d'une licence.
$license->reset_activation_limit()
Cette méthode peut être utilisée pour réinitialiser la limite d'activation d'une licence conformément aux paramètres du produit de téléchargement.
