Easy Digital Downloads の ソフトウェアライセンス拡張機能 は、ある程度のセットアップと統合が必要であり、問題が発生する可能性があります。それらのいくつかをここで概説し、潜在的な解決策を示します。
よくある質問
アップデートが利用可能になったときに顧客に連絡するにはどうすればよいですか?
Mailchimp や ConvertKit のようなメールマーケティングサービスを利用することをお勧めします。WordPress は大量のメール送信には推奨されないため、ユーザーへの連絡は EDD/WordPress の外部で行う必要があります。
カスタム/エンタープライズライセンスを販売することは可能ですか?
多数のサイトでアクティベートできるカスタムまたはエンタープライズライセンスの販売には組み込みサポートはありませんが、これを機能させるための回避策があります。最も簡単な方法は、Stripe または PayPal の請求書で顧客に請求することです。支払いが完了したら、手動で注文を作成し、ライセンスのアクティベーション制限を顧客が利用できるアクティベーション数に更新します。
ソフトウェアライセンスは Amazon S3 で動作しますか?
はい、問題なく、特別な設定も不要で完全に互換性があります。
ローカル/開発環境はアクティベーション数に影響しますか?
顧客が利用できるライセンスのアクティベーション数を制限することを選択した場合でも、アクティベーション数に影響を与えることなく、ローカル開発環境でライセンスをアクティベートできるようにすることが可能です。
これにより、ユーザーはテストおよび開発環境で簡単に最新の状態を維持しながら、無料のライセンスアクティベーションを取得できます。
これが機能するためには、次の 2 つのことが必要です。
1) ローカルホスト URL を無視する
WordPress 管理画面の ダウンロード → 設定 → 拡張機能 → ソフトウェアライセンス の下にある ローカルホスト URL を無視する というチェックボックスを探してください。それをチェックしてください。

2) 顧客に教育する
開発サイトのアクティベーションを無視する方法については、このガイドを参照してください。
カスタムライセンスキー形式を作成するにはどうすればよいですか?
EDD ライセンスキーはデフォルトで次のような md5 ハッシュです。
e0c7ccc47b2613c82d1073a4214deecc
別のものを希望する場合は、ソフトウェアライセンスを使用すると、一貫した一意のキーを作成する関数を作成し、edd_sl_generate_license_key というフィルターにフックするだけで簡単です。
ライセンスキー形式は、一意で一貫性がある限り、好きなものにすることができます。キーがこの形式である場合:
username_timestamp_licensekey sdavis2702_20151015120022_e0c7ccc47b2613c82d1073a4214deecc
この関数を使用できます:
// Example shown how to base the MD5 off of the user's email and purchase date
function pw_edd_license_md5_user_and_date( $key, $license_id, $download_id, $payment_id, $cart_index ) {
$name = get_user_by( 'email', edd_get_payment_user_email( $payment_id ) );
$date = get_post_field( 'post_date', $payment_id );
$timestamp = strtotime($date);
$nice_date = date( 'Yndhis', $timestamp );
$license = md5( $license_id );
$key = $name->user_nicename . '_' . $nice_date . '_' . $license;
return $key;
}
add_filter( 'edd_sl_generate_license_key', 'pw_edd_license_md5_user_and_date', 10, 5 );
より簡単な関数は、ユーザー名とライセンスキーのみを使用します:
// prepend user's username to license key
function sd_edd_license_username_md5( $key, $license_id, $download_id, $payment_id, $cart_index ) {
$name = get_user_by( 'email', edd_get_payment_user_email( $payment_id ) );
$license = md5( $license_id );
$key = $name->user_nicename . '_' . $license;
return $key;
}
add_filter( 'edd_sl_generate_license_key', 'sd_edd_license_username_md5', 10, 5 );
このドキュメントから最も重要なことは、一貫した一意の文字列を生成する任意のコードを使用し、それらの文字列をライセンスキーとして使用できるということです。
顧客のライセンスキーのリストを表示する
次のコードを使用すると、特定の顧客のライセンスキーのリストを取得して表示できます。
注意: 「$customer->id」は実際の顧客 ID に置き換える必要があります。
$licenses = edd_software_licensing()->licenses_db->get_licenses( array( 'number' => -1, 'customer_id' => $customer->id, 'orderby' => 'id', 'order' => 'ASC', ) );
私のストアのドメインがダウンした場合はどうなりますか?
WordPressプラグインまたはテーマのライセンス管理には、EDD Software Licensing SDKの使用を推奨します。SDKは、有効な応答がない場合、サイトへのAPIリクエストを繰り返しません。
ドメインを変更またはドメイン名を廃止する場合は、新しいドメインを使用したアップデートをリリースするか、APIへの呼び出しを完全に削除することをお勧めします。
一般的な問題
サンプルコードのカスタマイズ
Software Licensingに付属するサンプルコードでは、edd_やedd_sl_のような関数プレフィックスが使用されている場合があります。これらはご自身のプラグインに合わせて変更する必要があります。検索と置換は優れた方法ですが、検索文字列には注意が必要です。
edd_action_のようなプレフィックスを持つ関数は変更すべきではありません。EDDコアのプレフィックスではなく、ご自身の関数名のプレフィックスのみを変更するようにしてください。
アップデートの問題のトラブルシューティング
Software Licensingストアからのプラグインやテーマのアップデート時にエラーが発生している場合は、報告されているエラーに応じて、確認できることがいくつかあります。
アプデーターのカスタマイズ
Software Licensingの以前のバージョンで提供されていたレガシーなプラグインアプデータークラスを使用している場合、ライセンス管理とアップデートチェックの管理にはEDD_SL_Plugin_Updaterクラスを使用している可能性が高いです。他のプラグインが、ご自身のプラグインにバンドルしているものとは異なるバージョンのEDD_SL_Plugin_Updaterクラスを含んでいる場合、「競合」のリスクがあります。このクラス名をプラグイン固有の名前に変更することで、競合を回避できます。例えば、プラグイン名が「My Custom Ads」の場合、EDD_SL_Plugin_UpdaterをMCA_Plugin_Updaterに変更し、それへの参照をすべて変更します。あるいは、EDD Software Licensing SDKを使用すると、プラグイン/テーマのアップデートの管理が大幅に簡素化されます。
SSLエラー
SSL接続の問題によって多くのエラーが発生する可能性があります。以下は、Software Licensingで一般的に見られるものです。
SSL:証明書のサブジェクト名が一致しません
このエラーは、サイトにインストールされているSSL証明書がプライマリドメイン名と一致しないことを意味します。これは通常、共有ホスティング環境で発生する可能性があり、最も一般的な解決策は、ホスティングプロバイダーから専用IPアドレスをリクエストすることです。ホスティングプロバイダーが専用IPアドレスをサポートしていない場合は、プライマリドメインと一致する適切なSSLチェーンを、共有ワイルドカードSSL証明書の代わりに設定するために、ホスティングプロバイダーと協力する必要があります。
SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
このSSLハンドシェイクエラーは、アップデートをリクエストしているサイトのサーバー上のOpenSSLバージョンが古く、アップデートを提供しているストアが必要とするSSLプロトコルをサポートしていない場合に発生します。この問題を解決するには2つの方法があります。理想的な解決策は、アップデートをリクエストしているサイトが、プラットフォーム用のOpenSSLソフトウェアが最新であることを確認することです。OpenSSLは、HTTPSプロトコルを介した通信を容易にするサーバーソフトウェアです。これが可能な解決策でない場合は、ホスティングプロバイダーまたはサーバー管理者に連絡して、これらの古いSSLバージョンを受け入れるようにWebサーバーを構成してもらうことができますが、これは安全性の低い接続をサーバーに許可するため、理想的ではありません。
cURLエラー35: SSL接続エラー
ソフトウェアライセンスによるアップデートでこの特定のエラーが発生するのは、通常、CloudflareのFlexible SSLオプションを使用している場合に発生します。このオプションは、アップデートをリクエストしているクライアントサーバーに存在する一部のcURLバージョンでチェーンの問題を引き起こします。これをサーバー側で修正するには(クライアントにcURLバージョンを更新してもらう必要なし)いくつかの方法があります。1つ目は、有料のCloudflare SSLにアップグレードすることです。Cloudflareの有料プランのSSL証明書は、通常この問題を引き起こしません。もう1つの解決策は、サードパーティからSSL証明書を購入し、サーバーに直接インストールすることです。
ダウンロードに失敗しました。SSL: 代替証明書サブジェクト名がターゲットホスト名と一致しません
An error occurred while updating Resurrect: Download failed. SSL: certificate subject name '*.example.com' does not match target host name 'anotherexample.com'
これは、顧客のサイトに古いバージョンのOpenSSLまたはcURLがある場合に発生します。その後、2つのサイトは安全に通信できず、アップデートは失敗します。
唯一の解決策は、サーバーに古いバージョンのソフトウェアがあるサイトが最新バージョンに更新することです。
ダウンロードに失敗しました。SSLピア証明書またはSSHリモートキーが無効です
顧客が製品のアップデート時にこの エラーを目にする場合は、SSL証明書が正しく構成されていないことをウェブホストに知らせる必要があります。
ダウンロードに失敗しました。サービス利用不可
このエラーは、プラグインまたはテーマを販売しているサイトと同じサイトで、そのプラグインまたはテーマを更新しようとしたときに表示されます。ソフトウェアライセンスがWordPressアップデートAPIと統合される方法により、現在、販売元のサイトから自身のテーマまたはプラグインを更新することはできません。WordPressがアップデートをインストールするとき、サイトを一時的にメンテナンスモードにし、そのプロセス中にサイトは自身のアップデートをインストールできません。テーマまたはプラグインを販売元のサイトから更新するには、手動でアップデートをインストールする必要があります。
ダウンロードに失敗しました。認証されていません / リダイレクトが多すぎます
このエラーは、プラグインまたはテーマを新しいバージョンに更新するときに発生します。新しいバージョンをアップロードする際に、現在のバージョンを置き換えるのではなく、新しいバージョンで新しいファイルを追加してから前のファイル行を削除した場合、このエラーが発生する可能性があります。現在、このバグを認識しており、解決に向けて取り組んでいますが、当面の簡単な解決策は、「更新」ボタンを2回クリックしてファイルキーを書き直すか、常に現在のファイルを置き換えることです。新しいファイルを2番目のファイル行に追加するのではなく。
更新パッケージが利用できません
このエラーが表示される場合、通常は次のことを意味します。
- 顧客のサイトでのライセンス認証に問題があります。顧客がこのエラーを報告した場合、確認すべきことがいくつかあります。まず、更新しようとしているドメインがライセンスに対してアクティブ化されていることです。これは、ダウンロード → ライセンスに移動することで確認できます。次に、ユーザーが更新しようとしているライセンスキーを検索し、「サイトの管理」をクリックして、彼らがアクセスしているドメインがリストにあることを確認します。ない場合は、管理者から自分で追加するか、顧客にライセンス管理ページにアクセスして自分でアクティブ化してもらうことができます。
- もう1つの結果は、ライセンスが期限切れまたは無効になっていることです。この場合、顧客はライセンスを更新するか、サイト管理者が手動で無効にした必要があります。
更新プログラムの後、奇妙で長いフォルダ名
これは、.zipファイルが不適切に作成された場合に発生します。最終的な.zipアーカイブを作成する際には、フォルダの内容だけでなく、フォルダとその内容をzipすることが重要です。
zipファイル構造は次のようになります。
filename.zip
– product-name/
— ファイルはこちら
— ここにもう1つのファイル
言い換えると、ファイルはzipファイルの最上部ではなく、フォルダ内にある必要があります。フォルダ名を内部に含めるようにファイルを再パッケージ化すると、問題が解決します。
CloudFlare統合
CDN、キャッシュレイヤー、またはSSLプロバイダーとしてCloudFlareを使用している場合は、次の文字列を含むすべてのURLのキャッシュをバイパスするようにCloudFlareを設定することをお勧めします。
/edd-sl
これは、ライセンスステータスを確認し、更新パッケージを配信するためのAPIエンドポイントです。これらのエンドポイントURLがキャッシュされると、顧客への更新の適切な配信に問題が発生する可能性があります。
PCLZIP_ERR_BAD_FORMAT
このエラーはEDDソフトウェアライセンスプラットフォームに固有のものではありませんが、確認できるいくつかの解決策があります。1つ目は、ファイルをダウンロードして展開するための十分なディスク容量があることです(更新を処理するために.zipファイルのサイズの2倍が必要になると想定してください)。zipファイルが1MBの場合、更新を適切に処理するには2MB強の空き容量が必要になります。これらの数値は正確に2倍ではありませんが、開始点として良い目安です。
確認すべきもう一つの点は、.zipファイルが破損していないことです。これは、.zipファイルを別のコンピューターに転送し(電子メールで添付するか、USB経由で)、そこでも解凍を試みることでテストできます。別のコンピューターで解凍できない場合は、元のコンピューターでの.zipファイルの作成に問題がある可能性が高いです。
このエラーは、エラーを発生させているプラグインまたはスクリプトによっても引き起こされる可能性があります。Software Licensing APIがzipパッケージを作成しようとすると、エラーがzipファイルに追加され、その構造が破損します。通常、これはウェブサイトのwp-config.phpファイルでWP_DEBUGがTRUEに設定されていることを意味します。エラーをチェックするのに良い方法ですが、ライブウェブサイトではFALSEに設定しておくのが最善です。あるいは、有効にしたまま、サーバー上のファイル(wp-contents/debug.logファイル)にエラーを記録することもできます。wp-config.phpファイルに次の行を追加してこれを行います。
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_display', false );
