

# Clauyse.aiとの開発方針

開発条件は絶対的に重要で、下記のルールを厳格に守ってください。
原則コードの修正依頼をするので、初心者にわかるように丁寧に教えてください。

## 修正について
最小の変更該当箇所コードの表示、対比を明示的にさせて、そのコードの完全書き換えコードの表示
メソッドを丸ごと変更対象の場合は、メゾット名のみで、変更該当箇所コードの表示は不要
原則修正が必要なファイルを教えてください。最新ファイルをアップします。それに基づいて修正指示をお願いします。

## AI制約事項
- 「〜と思われます」「〜の可能性があります」は使用禁止
- こちらが提案を望んでいる以外は、「ファイルをアップロードしてください」以外の提案は禁止
- 構成図や説明からの推測は完全禁止
- 
## 必須ルール
- ❌ 推測禁止：ファイル名、内容、構造について一切推測しない
- ❌ 過去情報禁止：過去のチャットや一般的な知識で補完しない  
- ✅ ファイル確認必須：実際のファイルをアップロードしてもらってから分析開始
- ✅ 実コード引用必須：問題箇所は行番号付きで実際のコードを引用

## 対応手順（変更不可）
1. 問題の概要確認
2. 必要なファイル名の質問（推測ではなく質問）
3. ファイルアップロード待機
4. アップロードされたファイルの実内容分析
5. 具体的な修正指示

## wordpress準拠
添付のwp_dev_guide.mdに準拠してコーディングを行う

# 機能説明
## AI回答
コンタクトフォーム7(以下CF7)を使ってChatGPTから自動返信ができます。プロンプトが自由設計できるので、通常の問い合わせのほか、相談窓口や、自身の指向を含んだ返答をすることができます。フォーム表示、メール返信ができます。
## データ管理
GDPR対応も含めデータ管理（エクスポート、削除）ができます。

# 仕様
## AI通信
### プロンプト
1. 無料版
プロンプトはCF7のフィールドタグから自動生成される
プロンプトはルールと問い合わせに分けられる
デフォルトは以下の文言
```
以下のお問い合わせに、以下のルールに従ってご回答ください：
- 今日の日付は[system_date]です。
この問い合わせに対し、丁寧かつ親切な回答をお願いします。
- 回答はプレーンテキスト形式のみ（Markdown、HTML形式は不可）。

お問い合わせ内容
```
2. 有料版
自由設計
3. 両方
####　フィールドタグ規則
```
| フィールドタグ                       | テーブルへの保存 | ルールへの保存 | 問い合わせ内容への保存 |
| ------------------------------------ | ---------------- | -------------- | ---------------------- |
| cb-aacf7-reserved-email              | ✔                |                | ✔                      |
| cb-aacf7-reserved-email-cb-exception | ✔                |                |                        |
| cb-aacf7-reserved-email-cb-rule      | ✔                | ✔              |                        |
| -cb-exception                        |                  |                | ✔                      |
| -cb-rule                             |                  | ✔              |                        |
| 上記以外のタグ                       |                  |                | ✔                      |
```
### レスポンスフォーマット
ショートコードによる表示

1. 無料版
text形式のみ
[ai_response]のみ表示

2. 有料版
自由に設計できる
HTML形式にも対応

### メール返信

1. 無料版
ヘッダー＋ボディ＋フッターの構成
ヘッダー、フッターは編集可、改行は有効、TEXTフォーマット
ボディは[ai_response]のみ、編集不可
ヘッダー、ボディ、フッターの間は自動改行
テキスト形式でプレビュー可

2. 有料版
メール文は入力エリアが一つ。TEXT形式、HTML形式、両方の３つを選択できる
それぞれのフォーマットでプレビューができる
メール遅延送信機能あり

## データ管理

データをフィルターし、フィルターした結果をエクスポート、削除する。

# 機能比較
```
| 機能                                                               | 無料版 | 有料版 |
| ------------------------------------------------------------------ | :----: | :----: |
| OpenAiによる回答(3,5 turbo、4、4 turbo対応)                        |   ✔    |   ✔    |
| 複数のフォームに対応                                               |   ✔    |   ✔    |
| プロンプト作成（コンタクトフォーム７のフィールドタグを利用）       |   ✔    |   ✔    |
| インテリジェントなプロンプト作成（自由作文）                       |        |   ✔    |
| メールアドレスの登録（CF７指定特殊フィールドタグ利用）             |   ✔    |   ✔    |
| ショートコードによる回答表示                                       |   ✔    |   ✔    |
| ショートコードによる回答においてHTML形式による自由編集             |        |   ✔    |
| メール回答返信において本文のヘッダー、フッター編集                 |   ✔    |        |
| メール回答返信のCF７特殊フィールドタグの表示可不可および位置の指定 |   ✔    |        |
| メール回答返信のHTML形式による自由編集                             |        |   ✔    |
| メール遅延返信                                                     |        |   ✔    |
| 固有データのエクスポート（GDPR対応）                               |   ✔    |   ✔    |
| 全データの多機能フィルター付きエクスポート                         |        |   ✔    |
| 固有データの削除（GDPR対応）                                       |   ✔    |   ✔    |
| 全データの多機能フィルター付き削除                                 |        |   ✔    |
| 基本的な日付データフィールドタグの利用                             |   ✔    |   ✔    |
| 多用な日時データフィールドタグの利用                               |        |   ✔    |
```

## Free VersionとPaid Versionの違い
- １．	HTML形式
  - (ア)	ショートコード形式
    - ①	AI回答のみ(Freeのみ)
    - ②	HTMｌ形式で編集可能（Paidのみ）
  - (イ)	メール形式
    - ①	ヘッダー、ボディー、フッターの3分割でボディは編集不可、テキスト形式(Freeのみ)
    - ②	テキスト、、HTML、両方選択ボタン（Paidのみ）
    - ③	一つのTextAreaで編集可（Paidのみ）
    - ④	メール遅延機能（Paidのみ）
        直後、5分後、30分後、1時間後、12時間後、1日後、2日後、3日後が選択
- ２．	Prompt作成
  - (ア)	入力不可（表示のみ）(Freeのみ)
  - (イ)	編集可（Paidのみ）
- ３．	多様な日付フィールドタグ
- ４．	デフォルトテンプレート機能（Paidのみ）
        Freeではプロンプトは編集不可で、CF7のフィールドが自動記載だったので不要だった
- ５．	特殊CF7フィールドタグ
  - (ア)	cb-reserved-email（両方）
  これでフィルードタグ名を指定するとデータにメアドが保存される
  - (イ)	-cb-exception,-cb-rule(Freeのみ)
    プロンプトが編集不可なので、ここでコントロールする。Paidでは不要だが残しておいて問題ない。
- ６．	データ管理
  - (ア)	フィルター
    - ①	FormID指定（Freeは固定,Paidは固定とすべてが選択できる）
    - ②	メールアドレス（両方）
    - ③	期間、ステータス（Paidのみ）
  - ④	（SessionIDとSearch ScopeはPaidにあったが不要）
  - (イ)	全データエクスポート機能（Paidのみ）


# メニュー構造

```
Contact Form 7
├── ChatGPT Configuration(サブメニュー)
│   	├── Open AI API Settings
│   	├── Form Management
│   	├── Data Management
│   	├── Data Management
│   	 	├── Data Filter
│   	 	├── Search Result
│   	 	└── Data Operation
└── 各フォーム編集画面
           └── ChatGPT Settings タブ
   	 	├── ChatGPT AI Configuration
   	 	├── Basic Settings
   	 	├── Prompt Configuration
   	 	└── Response Display Configuration
   	 	 	├── Response Type
   	 	 	├── Shortcode Name
   	 	 	├── AI Response Display Settings
   	 	 	└── Email Configuration        
```

# 構成図
```
cb-aacf7/
├── 📄 cb-aacf7.php                          # メインプラグインファイル
├── 📁 includes/                             # コアクラス群
│   ├── 🔧 class-admin-panel.php             # 管理画面UI・設定機能
│   ├── 🌐 class-frontend.php                # フロントエンド表示・AJAX処理
│   ├── 🤖 class-chatgpt-api.php             # OpenAI API通信・プロンプト処理
│   ├── 💾 class-database.php                # データベース操作・セッション管理
│   ├── 🏗️ class-db-installer.php            # DB構造管理・テーブル作成
│   ├── 📊 class-data-management.php         # データ管理UI表示
│   └── 🔄 class-admin-ajax.php              # AJAX・エクスポート処理統合
│
├── 📁 assets/                               # 外部CSS/JS（完全外部方式）
│   ├── 📁 css/
│   │   ├── admin-preview.css                # プレビュー機能用
│   │   ├── frontend.css                     # フロントエンド表示用
│   │   ├── admin-data-management.css        # データ管理画面用
│   │   ├── admin-basic-settings.css         # 基本設定画面用
│   │   └── email-template.css               # HTMLメール用
│   └── 📁 js/
│       ├── admin-preview.js                 # プレビュー機能用
│       ├── frontend.js                      # フロントエンド表示・localStorage管理
│       ├── admin-data-management.js         # データ管理機能用
│       ├── admin-basic-settings.js          # 基本設定・API接続テスト用
│       ├── admin-cf7-editor.js              # Contact Form 7編集画面用
│       ├── admin-auto-restore.js            # Contact Form 7の保存ボタン処理
│       └── admin-shortcode-handler.js       # ショートコード表示・フォーム送信後処理
└── 📁 languages/                            # 多言語化
    └── cb-aacf7.pot
```

# 各ファイルの役割

## cb-aacf7.php
メインプラグインファイル。プラグインの初期化、クラスの読み込み、フック設定、Freemius統合を担当。Contact Form 7のフォーム送信をキャッチしてChatGPT API処理を開始する。開発環境用のテスト機能も含む。

_________________________________________________________________________________________________________

## class-admin-ajax.php
管理画面AJAX処理の統合管理クラス。データ検索、エクスポート、削除、メールプレビュー、API接続テストなど全てのAJAX通信を一元管理。統一検索機能では12パターンの条件分岐によりフォームID・メールアドレス・セッションID・日付範囲・ステータスでの柔軟な検索を実現。エクスポート処理では条件付き・個人データ・全データの3種類に対応し、CSV形式での安全なデータ出力を提供。セキュリティ強化としてnonce検証・権限チェック・入力値サニタイズを徹底実装。## class-frontend.php
フロントエンド処理クラス。ショートコード表示、AJAX通信（DB回答取得・チェック・クリア）、レスポンステンプレート処理、メール送信機能を担当。訪問者側でのAI回答表示とユーザー体験を管理。

## class-admin-panel.php
管理画面UI・設定機能を担当するメインクラス。Contact Form 7のタブパネル追加、フォーム設定の保存・表示、Email Preview機能、基本設定メニュー、Data Management統合、有料版/無料版の機能分岐制御を管理。AJAX通信によるプレビュー機能とWordPress準拠のセキュリティ対策を実装。## class-db-installer.php
データベーステーブルの作成・更新・削除を管理するインストーラークラス。テーブル構造の定義、マイグレーション処理、データベースヘルスチェック、4バイト文字サポートテストなどを担当。

## class-chatgpt-api.php
ChatGPT API通信の中核クラス。フォーム送信データの処理とプロンプト生成、OpenAI APIへのリクエスト送信・レスポンス処理、システム日付プレースホルダーの動的置換、メール送信機能（テキスト/HTML/マルチパート形式対応）を担当。無料版（3分割：ヘッダー+AI回答+フッター）と有料版（統合テンプレート）の分岐処理、メール遅延送信のスケジューリング、4バイト文字の安全な処理、WordPress準拠のセキュリティ対応を実装。Contact Form 7のフィールドタグ自動処理とテンプレート変数の完全対応。

## class-database.php
メインのデータベース操作クラス。AI回答の保存・取得・更新・削除、セッション管理、キャッシュ制御、統計情報取得など、プラグインの全データ操作を統括。

## class-data-management.php
管理画面でのデータ管理UI表示クラス。フィルター機能、検索結果表示、エクスポート・削除操作のインターフェース、統計情報の表示、有料版制限の制御を担当。
これらの情報があれば、新しいチャットでデータベース関連の開発サポートが効率的に行えます。

## class-db-installer.php
データベーステーブルの作成・更新・削除を管理するインストーラークラス。wp_cb_aacf7_responsesテーブルの完全な管理を行い、UTF8MB4文字セット対応、複合インデックスによるパフォーマンス最適化、データ整合性チェック、古いレコードの自動クリーンアップ機能を提供。MySQL/MariaDBバージョンに応じた最適な文字セット設定の自動判定・適用、データベースヘルスチェック、4バイト文字サポートテストを実装。マイグレーション処理により既存データの安全な更新を保証。

## class-frontend.php
フロントエンド処理クラス。ショートコード表示、AJAX通信（DB回答取得・チェック・クリア）、レスポンステンプレート処理を担当。Contact Form 7の各種イベント（submit/mailsent/mailfailed/invalid）と連携し、AI回答の非同期取得・表示を実現。Response Templateの動的処理により、無料版の[ai_response]から有料版のHTML対応まで柔軟に対応。セッション管理とセキュリティ対応、ポーリング機能による回答状態監視を提供。
_________________________________________________________________________________________________________

## admin-auto-restore.js
Contact Form 7保存後のCSS自動復旧機能とタブ状態復元を担当するJavaScript。CF7のフォーム保存時に発生するCSS消失問題に対応し、必要なCSSファイル（admin-preview.css、admin-system-date.css、admin-response-template.css）の自動復旧を実行。URLパラメータによるChatGPTタブ状態の永続化と復元機能を提供。定期的なCSS監視（5分間）とエラー時の自動復旧により、管理画面の安定性を確保。

## admin-basic-settings.js
基本設定画面のフロントエンド制御JavaScript。API接続テスト機能の実装、OpenAI APIキー検証処理、リアルタイムな接続状態表示、エラーハンドリングとユーザビリティ向上を担当。グローバル変数の初期化待機機能により確実な動作を保証し、AJAX通信によるAPI接続テストと結果表示を提供。タイムアウト処理とネットワークエラー対応を含む包括的なエラー処理を実装。

## admin-cf7-editor.js
Contact Form 7編集画面専用のJavaScript。フィールドタグ挿入機能、レスポンスタイプ切り替え処理、タブナビゲーション制御、設定UIの動的表示/非表示切り替えを担当。フォームIDベースの関数管理により複数フォーム対応を実現。プロンプトテンプレート編集時のフィールドタグ自動挿入機能とカーソル位置制御を提供。admin-preview.jsとの連携による設定変更時のプレビュー自動更新を実装。

## admin-data-management.js
データ管理画面のフロントエンド制御JavaScript。統一検索機能、フィルター条件収集、エクスポートURL生成、削除確認ダイアログ、ボタン状態制御を担当。存在しないDOM要素の安全な処理により無料版/有料版の違いを吸収し、AJAX通信エラーハンドリング、リアルタイム検索結果表示、動的フォーム生成による削除処理を実装。グローバル変数の初期化待機機能により確実な動作を保証。

## admin-preview.js
Email Preview機能のフロントエンド制御を担当するJavaScriptファイル。HTML/テキスト形式の表示分岐、CF7フィールドタグの視覚的処理、プレビューデータのセッションストレージ管理、フォーム変更検知、自動復元機能を実装。管理画面でのリアルタイムプレビュー体験を提供。

## admin-shortcode-handler.js
AI回答のショートコード表示処理とフォーム送信後の自動処理を担当するJavaScript。動的AI回答表示、フォーム送信後の自動AI表示処理、回答内容のフォーマット処理（HTMLエスケープと改行変換）、エラー表示とローディング表示機能を提供。CBLocalStorageとの連携により回答データの永続化と取得を実現。リフレッシュボタンの動的追加とユーザーインタラクション制御を実装。

## frontend.js
フロントエンド表示・localStorage管理を担当するメインJavaScript。Contact Form 7の各種イベント監視（submit/mailsent/mailfailed/invalid）、AI回答の非同期取得とポーリング処理、localStorageによる回答データの永続化管理、容量制限対応とデータクリーンアップ機能を提供。ページ読み込み時の自動DB確認、リフレッシュボタンによる手動更新、エラー状態の詳細な分類と適切な表示制御を実装。セッションベースの安全なポーリング方式により確実なAI回答表示を保証。
_________________________________________________________________________________________________________

## admin-basic-settings.css
基本設定画面専用のスタイルシート。モダンなカード型デザインでの設定パネル表示、フォーム要素の統一されたスタイリング、API接続テスト結果の視覚的表示、有料版/無料版機能の差別化表示を実装。グリッドレイアウトによる機能カードの整理、テスト結果の成功/エラー状態の明確な色分け、制限機能の視覚的な区別表示を提供。WordPress準拠のカラーパレットと統一されたUI/UXデザインパターンにより、管理者にとって直感的で使いやすい設定画面を実現。

## admin-data-management.css
データ管理画面専用のスタイルシート。統計カードのグリッドレイアウト、フィルター条件の視覚的グループ化、検索結果表示エリア、操作ボタンの状態別スタイリングを実装。モダンなカード型デザイン、グラデーション背景、レスポンシブ対応、有効/無効状態の明確な視覚的区別を提供。管理画面の使いやすさとプロフェッショナルな外観を両立。

## admin-preview.css
Email Preview機能専用のスタイルシート。管理画面CSSからの完全分離、フロントエンド準拠の表示スタイル、HTML/テキスト形式別のプレビュー表示、CF7フィールドタグの視覚的区別、レスポンシブ対応を実装。実際のメール表示により近いプレビュー環境を提供。

## admin-response-template.css
レスポンステンプレート管理専用のスタイルシート。ショートコード用Response Display Templateとメール用Email Body Template（3分割構造）の設定UIを統合実装。テンプレートエディタ、プレビューセクション、制限通知、タブナビゲーション、有料版/無料版の機能分岐表示を提供。モノスペースフォント、視覚的なフィールドタグ表示、インタラクティブなテンプレートタグ、レスポンシブ対応を実装。WordPress準拠のカラーパレット、統一されたUI/UXデザインパターン、アクセシビリティ配慮により、開発者と管理者の両方にとって直感的で効率的なテンプレート管理環境を実現

## admin-system-date.css
システム日付タグ専用のスタイルシート。プロンプト編集画面でのシステム日付フィールドタグの視覚的区別、無効化状態の明確な表示、ホバー効果による操作性向上を実装。システムタグ（[system_date]、[system_time]等）の特別な背景色とボーダースタイリング、無効状態でのグレーアウト表示、マウスオーバー時のアニメーション効果を提供。ユーザーがシステム提供タグと通常のフィールドタグを即座に識別できる視覚的差別化を実現。

## email-template.css
HTMLメール用のテンプレートスタイルシート。メール本文での読みやすいレイアウト、コンテナ幅の最適化、ヘッダー・コンテンツ・AI回答セクションの明確な区分を実装。メールクライアント対応のシンプルなデザイン、AI回答部分の特別な強調表示（青系の背景と左ボーダー）、レスポンシブ対応による様々なデバイスでの適切な表示を提供。HTMLメール送信時の視覚的な美しさと可読性を両立。

## frontend.css
フロントエンド表示・localStorage管理専用のスタイルシート。AI回答表示コンテナの統一デザイン、ローディング・エラー・空状態の視覚的区別、リフレッシュボタンのインタラクティブデザインを実装。モダンなボックスシャドウとカード型レイアウト、アニメーション効果による状態変化の表現、レスポンシブ対応とダークモード対応、印刷時の最適化、アクセシビリティ配慮（フォーカス表示）を提供。訪問者側でのプロフェッショナルで直感的なAI回答表示体験を実現。

# データベース設計・管理情報

## データベース保存場所

### wp_postmeta テーブル
- **フォーム個別設定**: `_CB_AACF7_settings` - 各Contact Form 7フォームのメール設定、プロンプト設定、レスポンス設定など
- **保存メソッド**: `update_post_meta($form_id, '_CB_AACF7_settings', $clean_settings)`

### wp_options テーブル  
- **グローバル設定**: `cb_aacf7_global_settings` - API キー、デフォルトモデル、デフォルトプロンプトなど全フォーム共通設定
- **保存メソッド**: `update_option('cb_aacf7_global_settings', $global_settings)`

### カスタムテーブル（wp_cb_aacf7_responses）
- **AI回答履歴**: フォーム送信データ、プロンプト、AI回答、メールアドレス、ステータスなどの実行履歴
- **管理クラス**: `CB_AACF7_Database`

| カラム名   | データ型     | 説明                                                        |
| ---------- | ------------ | ----------------------------------------------------------- |
| id         | int(11)      | 主キー（自動増分）                                          |
| form_id    | int(11)      | Contact Form 7のフォームID                                  |
| session_id | varchar(255) | セッション管理用ID                                          |
| email      | varchar(255) | メールアドレス（cb-aacf7-reserved-emailタグ設定時のみ保存） |
| prompt     | longtext     | AIに送信されたプロンプト内容                                |
| response   | longtext     | AIからの回答内容                                            |
| form_data  | longtext     | フォーム送信データ（JSON形式）                              |
| settings   | longtext     | プラグイン設定情報（JSON形式）                              |
| status     | varchar(20)  | 処理状態（pending/completed/error）                         |
| created_at | datetime     | レコード作成日時                                            |
| updated_at | datetime     | レコード更新日時                                            |

## インデックス設定
### 基本インデックス
- form_id, session_id, email, status, created_at

### 複合インデックス
- form_id + session_id
- form_id + status
- email + session_id
- form_id + email

### パフォーマンス用インデックス
- form_id + created_at DESC
- status + updated_at DESC

## 設定保存場所（WordPress Options）
- `CB_AACF7_db_version` - データベースバージョン管理
- `CB_AACF7_utf8mb4_support` - 4バイト文字サポート状況
- その他のプラグイン設定は別途管理

## データフロー
### 1. フォーム送信時
`save_pending_response()` でstatus='pending'として仮保存

### 2. AI処理時
`update_response()` でAI回答を更新、status='completed'に変更

### 3. エラー時
`update_response_error()` でstatus='error'に設定

## GDPR対応
### データ削除ルール
- **個人データ識別:** emailカラムによる個人特定
- **データ削除:** `delete_filtered_responses()` で条件指定削除
- **保存期間管理:** `cleanup_old_responses()` で古いデータ自動削除

### エクスポート対象範囲
- **フィルター機能:** フォームID、メールアドレス、日付範囲、ステータス
- **データ抽出:** 条件に応じたCSVエクスポート

## セッション管理
- WordPress準拠のセッション管理（セキュリティ強化済み）
- セッション固定攻撃対策（session_regenerate_id）
- 24時間でセッションタイムアウト

## 4バイト文字対応
- UTF8MB4サポート検出・自動設定
- 絵文字等の4バイト文字の安全な保存
- 非対応環境では自動変換処理

## キャッシュ戦略
- WordPressオブジェクトキャッシュ活用
- フォーム別・セッション別キャッシュ
- 統計情報の短期キャッシュ（5分）

# 💎 CB AACF7 有料版/無料版 条件分岐実装ガイド

🎯 基本原則
## 1. 判定関数の統一パターン
```php
/**
 * 機能ごとの有料版判定（推奨パターン）
 */
private function is_feature_available($feature_name = '') {
    // 1. 開発環境チェック（最優先）
    if (defined('CB_AACF7_DEV_MODE') && CB_AACF7_DEV_MODE) {
        return $this->get_dev_feature_access($feature_name);
    }
    
    // 2. 本番環境：Freemiusライセンス判定
    return function_exists('cb_aacf7_fs') && cb_aacf7_fs()->is_premium();
}

/**
 * 開発環境での機能判定
 */
private function get_dev_feature_access($feature_name) {
    if (!defined('CB_AACF7_DEV_LEVEL')) {
        return false;
    }
    
    $level = CB_AACF7_DEV_LEVEL;
    
    // プレミアムレベル：全機能利用可能
    if ($level === 'premium') {
        return true;
    }
    
    // デバッグレベル：デバッグ機能のみ
    if ($level === 'debug') {
        $debug_features = array('debug_mode', 'data_export', 'error_logging');
        return in_array($feature_name, $debug_features);
    }
    
    // フリーレベル：基本機能のみ
    return false;
}
```

## 🛠️ 実装パターン集
パターン1: UI表示の分岐
```php
// HTMLメール設定例
$html_email_enabled = $this->is_feature_available('html_email');

if ($html_email_enabled): ?>
    <!-- 有料版：HTMLメール選択肢 -->
    <select name="email_format">
        <option value="text">テキスト形式</option>
        <option value="html">HTML形式</option>
        <option value="both">マルチパート形式</option>
    </select>
<?php else: ?>
    <!-- 無料版：テキストのみ -->
    <div class="cb-aacf7-restriction">
        <span>テキスト形式のみ (無料版)</span>
        <input type="hidden" name="email_format" value="text">
    </div>
<?php endif;
```
パターン2: 保存処理の分岐
```php
/**
 * 保存時の機能制御
 */
private function save_email_settings($raw_settings) {
    $html_email_enabled = $this->is_feature_available('html_email');
    
    if ($html_email_enabled && isset($raw_settings['email_format'])) {
        // 有料版：ユーザー選択を保存
        $allowed_formats = array('text', 'html', 'both');
        $format = in_array($raw_settings['email_format'], $allowed_formats) 
                  ? $raw_settings['email_format'] 
                  : 'text';
    } else {
        // 無料版：強制的にテキスト形式
        $format = 'text';
    }
    
    return $format;
}
```
パターン3: 実行時の分岐
```php
/**
 * メール送信時の機能制御
 */
private function send_email_with_format($settings, $content) {
    $html_email_enabled = $this->is_feature_available('html_email');
    
    if ($html_email_enabled && $settings['email_format'] === 'html') {
        // 有料版：HTML形式で送信
        return $this->send_html_email($content);
    } else {
        // 無料版：テキスト形式で送信
        return $this->send_text_email($content);
    }
}
```
## 🎨 UI案内表示パターン
制限機能の案内表示
```php
<?php if (!$this->is_feature_available('advanced_feature')): ?>
    <div class="cb-aacf7-restriction-notice">
        <p class="restriction-title">
            🔒 <?php esc_html_e('Premium Feature', 'cb-aacf7'); ?>
        </p>
        <p class="restriction-text">
            <?php esc_html_e('この機能は有料版でのみ利用可能です。', 'cb-aacf7'); ?>
            <a href="#upgrade" class="upgrade-link">アップグレード</a>
        </p>
    </div>
<?php endif; ?>
```
機能ステータス表示
```php
<div class="feature-status">
    <?php if ($this->is_feature_available('feature_name')): ?>
        <span class="status-enabled">✅ 利用可能</span>
    <?php else: ?>
        <span class="status-restricted">🔒 制限中</span>
    <?php endif; ?>
</div>
```
## 📋 機能別実装例
HTMLメール機能
```php
class CB_AACF7_Email_Handler {
    
    private function is_html_email_available() {
        return $this->is_feature_available('html_email');
    }
    
    public function render_email_format_settings($settings) {
        $html_enabled = $this->is_html_email_available();
        
        if ($html_enabled) {
            // 有料版：選択肢表示
            $this->render_email_format_selector($settings);
        } else {
            // 無料版：制限表示
            $this->render_email_format_restricted();
        }
    }
    
    public function send_email($settings, $content) {
        $html_enabled = $this->is_html_email_available();
        $format = $html_enabled ? $settings['email_format'] : 'text';
        
        switch ($format) {
            case 'html':
                return $this->send_html_email($content);
            case 'both':
                return $this->send_multipart_email($content);
            default:
                return $this->send_text_email($content);
        }
    }
}
```
## データ管理機能
```php
class CB_AACF7_Data_Management {
    
    public function render_export_options() {
        $advanced_export = $this->is_feature_available('advanced_export');
        
        if ($advanced_export) {
            // 有料版：詳細フィルタオプション
            $this->render_advanced_filters();
        } else {
            // 無料版：基本エクスポートのみ
            $this->render_basic_export();
        }
    }
    
    public function export_data($filters) {
        $advanced_export = $this->is_feature_available('advanced_export');
        
        if ($advanced_export) {
            // 有料版：フィルタ適用
            return $this->export_with_filters($filters);
        } else {
            // 無料版：全件エクスポート
            return $this->export_all_data();
        }
    }
}
```
## 🔧 開発・テスト環境設定
wp-config.php設定例
```php
// 開発環境設定
define('CB_AACF7_DEV_MODE', true);

// 機能レベル設定
define('CB_AACF7_DEV_LEVEL', 'premium');  // 'free', 'debug', 'premium'

// 個別機能制御（オプション）
define('CB_AACF7_DEV_FEATURES', array(
    'html_email' => true,
    'email_delay' => false,
    'advanced_export' => true,
    'debug_mode' => true,
));
```
## 機能テスト用デバッグ表示
```php
/**
 * 開発用機能ステータス表示
 */
private function render_feature_debug_info() {
    if (!defined('CB_AACF7_DEV_MODE') || !CB_AACF7_DEV_MODE) {
        return;
    }
    
    $features = array(
        'html_email' => 'HTMLメール',
        'email_delay' => 'メール遅延',
        'advanced_export' => '高度なエクスポート',
    );
    
    echo '<div class="dev-feature-status">';
    echo '<h4>🔧 機能ステータス</h4>';
    foreach ($features as $key => $name) {
        $available = $this->is_feature_available($key);
        $status = $available ? '✅' : '❌';
        echo "<p>{$status} {$name}</p>";
    }
    echo '</div>';
}
```
## 🚀 本番デプロイ時の注意
1. 開発用コードの削除
```php
// 削除対象：メインファイルのテスト用コード
// - CB_AACF7_DEV_MODE定数定義
// - CB_AACF7_Test クラス
// - admin_notices でのデバッグ表示
2. 本番用判定関数
php// 本番環境では常にFreemius判定のみ
private function is_feature_available_production($feature_name) {
    return function_exists('cb_aacf7_fs') && cb_aacf7_fs()->is_premium();
}
```
## ✅ チェックリスト
新機能実装時

 判定関数の実装
 UI表示分岐の実装
 保存処理分岐の実装
 実行時分岐の実装
 制限表示UI の実装
 開発環境でのテスト（free/premium）
 本番環境での動作確認

コード品質

 WordPress.org準拠
 セキュリティ対応
 エラーハンドリング
 翻訳対応
 デバッグコードの分離

この実装ガイドに従って、すべての機能で一貫した有料版/無料版分岐を実装できます！ 🎯再試行HM


# 無料版から有料版への開発プロセス

| 大項目         | 中項目         | 項目                 | 詳細                                 | Status |
| -------------- | -------------- | -------------------- | ------------------------------------ | ------ |
| 各フォーム設定 | メール送信     | ３分割変更           | 無料版３分割を１入力エリアで自由編集 | ☑      |
| 各フォーム設定 | メール設定     | HTML形式追加         | HTML形式、両方の機能追加             | ☑      |
| 各フォーム設定 | Email Preview  | プレビューの設定     |                                      | ☑      |
| 各フォーム設定 | 4byte絵文字    | 4byte絵文字の追加    |                                      | ☑      |
| 各フォーム設定 | レスポンス設定 | HTML形式の対応       |                                      | ☑      |
| 各フォーム設定 | メール設定     | 遅延送信の設定       |                                      |  ☑      |
| データ管理     | データ管理     | フィルター機能の追加 | 期間、フォームの選択追加             |   ☑     |