よくあるエラーと対処

ここでは、AppCotton を利用する中で実際によく encountered されるエラーとその対処をまとめています。
エラーは単なる現象ではなく、原因の位置を特定することで、最短で解決に向かうことができます。


1. 「選択した製品が見つかりません」

発生場面

  • ライセンス新規発行時
  • 購入(Checkout開始)時

原因

  • product_id または product_slug が一致していない
  • プランとプロダクトの紐付けが消えている

対処

  1. 管理画面 → プロダクト を開く
  2. 対象プロダクトにプランが紐づいているか確認
  3. ショートコードが 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 で落ちた

対処

  1. Stripe Dashboard → Webhook → Log を確認
  2. 最新の Signing Secret を AppCotton → 設定に再入力
  3. 再送ボタンを押してイベントを再配信

6. DB修復が失敗する / SQL エラーが出る

原因

  • DBのテーブル構造が途中状態のまま更新された
  • 古いバージョン → 新しいバージョンのアップデート時

対処

  1. AppCotton → 設定 → データベース修復 を実行
  2. それでも失敗する場合:
    • プラグインを一度 無効化 → 再有効化
    • これにより dbDelta() が再実行される

7. 無料プランがスパム的に大量登録される

原因

  • メール認証が OFF
  • reCAPTCHA が無効

対処

  1. AppCotton → 設定 → 無料プランはメール確認必須 を有効化
  2. reCAPTCHA(v2 / v3)を有効化
  3. 同一メールへの無料発行制限数を 1 に設定

8. 「ドメインが突然変わった / 認証が切れた」

原因

  • サイト移転、ローカル→本番、ステージング→本番など

対処

状況解決策
同一サイトのURL変更マイページ → ドメイン解除 → 再認証
サブドメイン構成の変化ドメイン正規化設定を確認
ローカル / staging のアクティベーションが残っているstaging用ライセンス or appcotton_ignore_domains を活用

9. 差額アップグレードが失敗する

原因

  • 現在のプランと新プランの価格差が正しく計算されていない
  • Stripe Checkout が mode=payment ではなく subscription で作られている

対処

  • 差額は サーバ側で計算する
  • Checkout Session 時の mode をプラン種別に合わせる
    • ワンタイム課金 → payment
    • サブスク → subscription

10. 最終手段:どこが悪いか分からない場合

切り分け手順(再現性を作る)

  1. 状況説明を書き出す(何をしたとき、どうなった)
  2. 期待する結果実際の挙動を並べる
  3. 直近の変更点を確認(更新したもの・触った設定・新しいキャッシュ)
  4. Stripe Webhook / Activation Log / PHP error log を照合
9割の問題は「どこで止まっているか」を特定するだけで解消します。

まとめ

エラーカテゴリ最初に確認するべき場所
認証系product_slug / activation_limit / ドメイン履歴
決済系Stripe Webhook → Log
DB系AppCotton → 設定 → データベース修復
無料スパムメール認証 / reCAPTCHA
URL/環境変化ドメイン解除による再認証