この章では、AppCotton SDK が提供する ライセンス検証の中心機能であるis_premium() と validate() について解説します。
これらは、製品(プラグイン / SaaS / Webアプリ)が プレミアム機能を開放する条件を決定するための基盤です。
is_premium() の役割
is_premium() は、ライセンスが以下の条件をすべて満たしている場合に true を返します:
| チェック項目 | 判定内容 |
|---|---|
| ライセンスキーが存在する | ユーザーがキーを登録済みか |
ライセンスが active 状態 | expired / revoked ではない |
| 対象の product_slug と一致 | 別製品のキーではない |
| ドメインが正しくアクティベート済み | 利用可能枠内であること |
| 期限が切れていない | expires_at > now または NULL |
結果
| 結果 | 意味 | UI/機能挙動 |
|---|---|---|
true | 有効 | プレミアム機能を開放 |
false | 無効 | アップグレード誘導 or ロック |
実装例(最小構成)
function yourplugin_is_premium(): bool {
$license_key = get_option('yourplugin_license_key');
return AppCotton_SDK::is_premium($license_key);
}
使用例
if ( yourplugin_is_premium() ) {
// プレミアム機能有効
include __DIR__ . '/premium/feature.php';
} else {
// 無料版UIを表示
yourplugin_show_upgrade_banner();
}
validate() API の詳細
validate() は、ライセンスキーの状態と使用状況(サイト数など)を
AppCotton サーバーに照会して取得する関数です。
呼び出し例
$result = AppCotton_SDK::validate($license_key);
返却例(成功)
{
"status": "active",
"product_slug": "combpass_premium",
"license_id": 123,
"usage": {
"used": 2,
"limit": 3,
"remaining": 1
},
"expires_at": null,
"activated": true
}
返却例(期限切れ)
{
"error": "expired_license",
"message": "このライセンスは有効期限が切れています。"
}
返却例(サイト数上限)
{
"error": "domain_limit_reached",
"remaining_slots": 0
}
is_premium() は validate() の結果をキャッシュします
| 項目 | 説明 |
|---|---|
| キャッシュ方法 | transient |
| 既定TTL | 5分(cache_ttl で変更可能) |
| キャッシュ破棄 | activate() / deactivate() 実行時に自動パージ |
これにより 毎回APIを叩かずに高速判定 が可能になります。
フローチャート
is_premium()
↓ 既存キャッシュある?
Yes → キャッシュ結果を返す
No → validate() API 実行
↓
結果に応じて True/False 判定
↓
成功なら結果をキャッシュ
なぜ「is_premium() だけで運用できる設計なのか」
| API | 用途 | フラグ化したもの |
|---|---|---|
| validate() | 状態・使用状況を問い合わせる | 機能レベルで必要なときに使う |
| is_premium() | 機能を開放できるかを判定 | validate() の結果を抽象化したもの |
つまり、開発者は基本的に is_premium() だけを使えばよいように設計されています。
典型的な使い分け
| シーン | 推奨関数 | 理由 |
|---|---|---|
| 機能を表示してよいか判定したい | is_premium() | 簡潔・最速 |
| 「使用中のサイト数」を UI に表示したい | validate() | usage 情報を取得する必要がある |
| ドメイン登録/解除処理 | activate() / deactivate() | ライセンス使用枠の更新が必要 |
まとめ
• is_premium() は「今このユーザーはプレミアム利用可能か」を返す
• validate() はライセンスの状態・使用状況を詳細に取得する
• is_premium() は validate() の結果を内部キャッシュして高速動作
• 開発者は UI/機能制御に is_premium() を使うだけで良い