ここでは、AppCotton を利用する中で実際によく encountered されるエラーとその対処をまとめています。
エラーは単なる現象ではなく、原因の位置を特定することで、最短で解決に向かうことができます。
1. 「選択した製品が見つかりません」
発生場面
- ライセンス新規発行時
- 購入(Checkout開始)時
原因
product_idまたはproduct_slugが一致していない- プランとプロダクトの紐付けが消えている
対処
- 管理画面 → プロダクト を開く
- 対象プロダクトにプランが紐づいているか確認
- ショートコードが
product_slugを正しく指定しているか確認
例:[AppCotton] エラー: product 属性を指定してください。
2. 「選択したプランが製品に紐づいていません」
発生場面
- ライセンス発行フォームで plan_id を選んだ時
原因
- そのプランが別のプロダクトに属している
- プラン削除後にキャッシュが残っている
対処
- 管理画面 → プロダクト → 該当製品 → プラン一覧 を確認し再登録
- フロント側キャッシュ(WP Fastest / LiteSpeed Cache)を クリア
3. 「ライセンスが無効です」
発生場面
- プラグイン側の
is_premium()が false となる
原因と対処
| 原因 | 対処 |
|---|---|
| ライセンスキーが間違っている | コピペの余分な空白や改行を削除 |
| ライセンスが停止(revoked) | ライセンス詳細にて active へ戻す |
| ドメイン上限に達している | マイページで不要ドメインの 解除 を行う |
| product_slug が一致しない | 利用プラグイン側のコードを確認する |
4. wp_remote_post が失敗する(通信エラー)
典型エラーメッセージ
cURL error 28: Connection timed out
cURL error 60: SSL certificate problem
原因
- サーバが外部API通信をブロックしている
- SSL証明書が正しく設定されていない
対処
| 対策 | 説明 |
|---|---|
| サーバのファイアウォール / ModSecurity の許可設定 | https://example.com/wp-json/appcotton/v1/* を許可 |
PHP curl extension を有効化 | サーバ管理画面 / Plesk / cPanel で有効に |
| SSL証明書の再発行 | Let’s Encrypt / Cloudflare を再設定 |
5. 「Webhook 受信に失敗しました」
発生場面
Stripe 決済は通ったが、ライセンスが発行されない。
原因
- Webhook URL または Signing Secret が間違っている
- Webhook が 400 / Timeout で落ちた
対処
- Stripe Dashboard → Webhook → Log を確認
- 最新の Signing Secret を AppCotton → 設定に再入力
- 再送ボタンを押してイベントを再配信
6. DB修復が失敗する / SQL エラーが出る
原因
- DBのテーブル構造が途中状態のまま更新された
- 古いバージョン → 新しいバージョンのアップデート時
対処
- AppCotton → 設定 → データベース修復 を実行
- それでも失敗する場合:
- プラグインを一度 無効化 → 再有効化
- これにより
dbDelta()が再実行される
7. 無料プランがスパム的に大量登録される
原因
- メール認証が OFF
- reCAPTCHA が無効
対処
- AppCotton → 設定 → 無料プランはメール確認必須 を有効化
- reCAPTCHA(v2 / v3)を有効化
- 同一メールへの無料発行制限数を 1 に設定
8. 「ドメインが突然変わった / 認証が切れた」
原因
- サイト移転、ローカル→本番、ステージング→本番など
対処
| 状況 | 解決策 |
|---|---|
| 同一サイトのURL変更 | マイページ → ドメイン解除 → 再認証 |
| サブドメイン構成の変化 | ドメイン正規化設定を確認 |
| ローカル / staging のアクティベーションが残っている | staging用ライセンス or appcotton_ignore_domains を活用 |
9. 差額アップグレードが失敗する
原因
- 現在のプランと新プランの価格差が正しく計算されていない
- Stripe Checkout が
mode=paymentではなくsubscriptionで作られている
対処
- 差額は サーバ側で計算する
- Checkout Session 時の
modeをプラン種別に合わせる- ワンタイム課金 →
payment - サブスク →
subscription
- ワンタイム課金 →
10. 最終手段:どこが悪いか分からない場合
切り分け手順(再現性を作る)
- 状況説明を書き出す(何をしたとき、どうなった)
- 期待する結果と 実際の挙動を並べる
- 直近の変更点を確認(更新したもの・触った設定・新しいキャッシュ)
- Stripe Webhook / Activation Log / PHP error log を照合
9割の問題は「どこで止まっているか」を特定するだけで解消します。
まとめ
| エラーカテゴリ | 最初に確認するべき場所 |
|---|---|
| 認証系 | product_slug / activation_limit / ドメイン履歴 |
| 決済系 | Stripe Webhook → Log |
| DB系 | AppCotton → 設定 → データベース修復 |
| 無料スパム | メール認証 / reCAPTCHA |
| URL/環境変化 | ドメイン解除による再認証 |