Easy Digital Downloadsコアと同様に、ソフトウェアライセンス拡張機能には、拡張機能の動作をニーズに合わせて調整するために使用できるさまざまなアクションおよびフィルターフックが含まれています。このドキュメントは、WordPressプラグインAPIに既に慣れている上級ユーザー向けに書かれています。
ライセンスの作成
ライセンス期間
デフォルトでは、すべてのライセンスキーには1年間の有効期限が設定されます。この有効期限の長さは、edd_sl_license_exp_lengthフィルターを使用して簡単に変更できます。フィルターには4つのパラメータが渡されます。
- $length (文字列) – このライセンスの有効期限の長さ。“+1 year”がデフォルトです
- $payment_id (整数) – このライセンスが生成された購入の支払いID
- $download_id (整数) – このライセンスが接続されているダウンロード/製品ID
- $license_id (整数) 新しく作成されたライセンスのID
有効期限の長さを変更する方法の簡単な例を次に示します。
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 );
ライセンス作成後の関数の実行
edd_sl_store_licenseアクションは、ライセンスキーが作成され、すべてのメタデータがそれに添付された直後に実行されます。このアクションには3つのパラメータが渡されます。
- $license_id (整数) – 新しく作成されたライセンスのID
- $download_id (整数) – このライセンスが接続されているダウンロード/製品のID
- $payment_id (整数) – このライセンスが作成された購入のID
このアクションにアタッチする可能性のある関数のサンプルは、次のようになります。
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 );
ライセンスアクティベーション中の関数の実行
edd_sl_activate_licenseアクションは、API経由でライセンスがアクティブ化された直後に実行されます。
do_action( 'edd_sl_activate_license', $license_id, $download_id );
ライセンスチェック中の関数の実行
edd_sl_check_licenseアクションは、API経由でライセンスがチェックされた直後に実行されます。
do_action( 'edd_sl_activate_license', $license_id, $download_id );
その他のフィルター
edd_sl_license_response – ダウンロード/製品のバージョンをリモートでチェックしたときに送信されるレスポンスに適用されます。
edd_sl_get_license_logs – ライセンスのログエントリが取得されたときに適用されます。
edd_sl_encoded_package_url – ダウンロードパッケージのエンコードされたパッケージURLが取得されたときに適用されます。
edd_sl_download_package_url – 自動更新用のダウンロードパッケージファイルが取得されたときに適用されます。
edd_license_labels – edd_license投稿タイプを登録する際の投稿タイプラベルに適用されます。
その他のアクション
edd_sl_before_package_download – 自動アップグレード用のダウンロードファイルがブラウザに提供される直前に実行されます。
ソフトウェアライセンス バージョン3.5以降には、ライセンスキーレコードを操作するためのEDD_SL_Licenseクラスが含まれています。EDD_SL_Licenseクラスを使用すると、ライセンスキーデータにアクセスしたり、既存のライセンスキーを更新したり、新しいライセンスキーレコードを作成したりできます。
オブジェクトのインスタンス化
ライセンスオブジェクトにアクセスする際のパフォーマンスを向上させるには、WordPressコアオブジェクトキャッシングレイヤーを使用するラッパーメソッドを使用する必要があります。ライセンスIDまたはライセンスキーのいずれかを使用してオブジェクトをインスタンス化できます。提供された情報に対してライセンスが存在しない場合、ラッパーメソッドは `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は、ライセンスIDを使用してインスタンス化するか、新しいライセンスを作成する際に値なしでインスタンス化できます。以下に例を示します。
$license = new EDD_SL_License( 2326422 );
新しいライセンスを作成したい場合:
$license = new EDD_SL_License(); $license->create( $download_id = 0, $payment_id = 0, $price_id = false, $cart_index = 0, $options = array() );
EDD_SL_Licenseを使用してライセンスを直接インスタンス化できますが、パフォーマンス上の理由からラッパー関数を使用することが推奨されます。
新しいライセンスを作成するために必要な引数については、以下で説明します。
利用可能なプロパティ
EDD_SL_Licenseクラスには、ライセンスキーレコードに関連する情報が含まれる多数のアクセス可能なプロパティが含まれています。
- ID – ライセンスレコードのID番号。これはWP_PostオブジェクトのIDに対応します。
- parent – 親ライセンスの投稿ID(存在する場合)。
- name – ライセンスの名前。これは、顧客のメールアドレスとライセンスキーが関連付けられている製品の名前を連結したものです。
- key – ライセンスキー自体。これは通常32文字の文字列ですが、何でも構いません。
- user_id – ライセンスキーが属するWP_UserのID(存在する場合)。
- customer_id – ライセンスが属するEDD_CustomerのID。
- payment_id – ライセンスが作成されたEDD_PaymentのID。
- payment_ids – ライセンスに関連する支払いIDの配列。更新とアップグレードが含まれます。
- cart_index – ライセンスキーが関連付けられている製品のカートアイテム配列内の数値インデックス。
- download – ライセンスキーが関連付けられているダウンロード製品のEDD_SL_Downloadインスタンス。
- download_id – ライセンスキーが関連付けられているダウンロード製品の投稿ID。
- price_id – ライセンスキーに割り当てられたダウンロード製品の価格オプションのID。
- activation_limit – ライセンスキーをアクティブ化できる一意のURL /マシンの数。
- sites – ライセンスキーがアクティブ化されているサイトURL(またはマシンID)の配列。
- activation_count – ライセンスキーが現在アクティブ化されている一意のURL /マシンの数。
- expiration – ライセンスキーの有効期限。
- is_lifetime – ライセンスがライフタイム(期限なし)ライセンスであるかどうかを示すブールフラグ。
- status – ライセンスの現在のステータス(アクティブ、非アクティブ、期限切れ)。
- post_status – ライセンスのWP_Postオブジェクトのpost_status。
- child_licenses – 子ライセンスキーの配列(存在する場合)。
各プロパティには、次のように直接アクセスできます。
// Access the price ID of the license $price_id = $license->price_id;
各プロパティは、次のようにプロパティの値を設定することによっても更新できます。
// Set the license activation limit $license->activation_limit = 100;
オブジェクトプロパティへの変更は、保存または更新メソッドを呼び出す必要なしにすぐに保存されます。
利用可能なメソッド
EDD_SL_Licenseクラスには、オブジェクトプロパティにアクセスするためのパブリックメソッドと、ライセンスデータにアクセスおよび対話するために使用できるいくつかのヘルパーメソッドが含まれています。
$license->create( $download_id = 0, $payment_id = 0, $price_id = false, $cart_index = 0, $options = array() )
このメソッドを使用すると、既存のダウンロード製品および支払いレコードの新しいライセンスレコードを作成できます。
- $download_id – 既存のダウンロード製品のIDである必要があります
- $payment_id – $download_idの購入が含まれていた既存の支払いレコードのIDである必要があります
- $price_id – 変数価格が有効な場合、$download_idのオプションの価格IDです
- $cart_index – このライセンスが対応するカートアイテムを正確に識別するオプションのカートアイテムインデックスです
- $options – ライセンスのオプションの配列。次のキーを含めることができます
- parent_license_id
- activation_limit
- license_length
- expiration_date
- is_lifetime
create()メソッドは新しいライセンスキーを作成するために使用できますが、通常は非常にカスタムな実装を除いて手動では使用されません。
$license->update( $data = array() )
このメソッドを使用すると、ライセンスのメタデータを一括で更新できます。$data配列は、meta_key/meta_valueのキー/値のペアである必要があります。
$license->renew()
このメソッドはライセンスキーの更新をトリガーし、有効期限を1期間延長し、ライセンスステータスをinactiveまたはactiveのいずれかにリセットします。
$license->enable()
このメソッドは、無効化されたライセンスキーを再度有効にします。
$license->disable()
このメソッドはライセンスキーを無効にします。
$license->get_meta( $meta_key = ”, $single = true )
このメソッドはライセンスのメタデータを取得します。
$license->update_meta($meta_key = ”, $value = ”, $old_value = ” )
このメソッドは、ライセンスのメタデータを更新します。
$license->get_renewal_url()
このメソッドは、ライセンスの更新URLを取得します。
$license->is_site_active( $url )
このメソッドは、指定されたURLがライセンスに登録されているかどうかを判断します。
$license->is_at_limit()
このメソッドは、ライセンスがアクティベーション制限に達したかどうかを確認します。
$license->license_length()
このメソッドは、ライセンスの単一期間の長さ(例:無期限または+1年)を返します。
$license->add_site( $url )
このメソッドは、ライセンスに新しいサイトURLを登録するために使用できます。
$license->remove_site( $url )
このメソッドは、ライセンスからサイトURLを削除するために使用できます。
$license->reset_activation_limit()
このメソッドは、ダウンロード製品の設定に従ってライセンスのアクティベーション制限をリセットするために使用できます。
