# Give Directions - Pro版実装ガイド

## 概要

Give Directionsプラグインは、**アドオン方式**でPro版機能を提供します。

- **無料版**: `give-directions/` - 基本機能を提供
- **Pro版**: `give-directions-pro/` - 拡張機能を提供する別プラグイン

## ディレクトリ構造

```
wp-content/plugins/
├── give-directions/              # 無料版
│   ├── give-directions.php       # メインファイル
│   ├── includes/
│   │   └── functions.php         # ヘルパー関数・フックポイント
│   ├── admin/
│   │   ├── edit-page.php         # 編集画面（制限表示追加）
│   │   ├── list-page.php         # 一覧画面（制限表示追加）
│   │   └── js/
│   │       └── admin-script.js   # 管理画面JS（制限チェック追加）
│   └── public/
│
└── give-directions-pro/          # Pro版アドオン
    ├── give-directions-pro.php   # Pro版メインファイル
    ├── includes/
    │   ├── class-license.php     # ライセンス管理
    │   └── class-pro-features.php # Pro機能管理
    └── readme.txt
```

## Pro版の機能

### 無料版の制限

- **ルート数**: 最大3件
- **経由地**: 最大2箇所
- **画像**: 最大10枚（全体）

### Pro版の機能

- ✅ **無制限のルート作成**
- ✅ **無制限の経由地追加**
- ✅ **無制限の画像アップロード**
- 🚧 地図のカスタマイズ（将来実装予定）
- 🚧 スライダーのカスタマイズ（将来実装予定）

## 開発環境でのセットアップ

### 1. Pro版プラグインの有効化

両方のプラグインをインストール・有効化します：

1. `give-directions` を有効化
2. `give-directions-pro` を有効化

### 2. 開発モードの有効化

`wp-config.php` に以下を追加：

```php
// Give Directions Pro - 開発モード
define('GIVE_DIRECTIONS_PRO_DEV', true);
```

これにより、ライセンスキーなしで全てのPro機能が使えます。

### 3. 動作確認

1. **管理画面** → **道案内** → **一覧**
   - ルート数の制限表示がない（無制限）

2. **管理画面** → **道案内** → **新規追加**
   - 経由地の制限表示がない（無制限）
   - 経由地を無制限に追加可能

3. **管理画面** → **道案内** → **Pro版ライセンス**
   - ステータスが「開発モード（有効）」と表示される

## 無料版とPro版の連携

### フックポイント

無料版は、Pro版が拡張できるように以下のフックポイントを提供しています：

#### アクションフック

```php
// プラグインの読み込み完了時
do_action('give_directions_loaded', $this);

// 初期化時
do_action('give_directions_init');

// ショートコード表示前
do_action('give_directions_before_shortcode', $atts);
```

#### フィルターフック

```php
// 最大ルート数
$max_routes = apply_filters('give_directions_max_routes', 3);

// 最大経由地数
$max_waypoints = apply_filters('give_directions_max_waypoints', 2);

// 最大画像数
$max_images = apply_filters('give_directions_max_images', 10);

// ショートコード出力
$output = apply_filters('give_directions_shortcode_output', $output, $atts);

// 地図カスタマイズ（Pro版用）
$options = apply_filters('give_directions_map_customization', $defaults, $post_id);

// スライダーカスタマイズ（Pro版用）
$options = apply_filters('give_directions_slider_customization', $defaults, $post_id);
```

### ヘルパー関数

無料版が提供する便利な関数：

```php
// Pro版がアクティブかチェック
if (give_directions_is_pro_active()) {
    // Pro機能を実行
}

// 最大値を取得（-1は無制限）
$max_routes = give_directions_get_max_routes();
$max_waypoints = give_directions_get_max_waypoints();
$max_images = give_directions_get_max_images();

// 新しいルートを追加できるか
if (give_directions_can_add_route()) {
    // 追加処理
}

// アップグレードURL取得
$url = give_directions_get_upgrade_url();
```

## Pro版の実装方法

### 制限を解除する

Pro版は、フィルターフックで無料版の制限を解除します：

```php
// give-directions-pro.php

// 無制限機能の提供
add_filter('give_directions_max_waypoints', function($max) {
    return give_directions_pro_is_active() ? -1 : $max;
}, 10);

add_filter('give_directions_max_routes', function($max) {
    return give_directions_pro_is_active() ? -1 : $max;
}, 10);
```

### Pro機能を追加する

新しい機能は `Give_Directions_Pro_Features` クラスに実装します：

```php
// includes/class-pro-features.php

class Give_Directions_Pro_Features {
    public function __construct() {
        // カスタマイズオプションを追加
        add_filter('give_directions_map_customization', 
            array($this, 'add_map_customization'), 10, 2);
    }
    
    public function add_map_customization($options, $post_id) {
        // Pro版のカスタマイズオプションを追加
        return $options;
    }
}
```

## ライセンス管理（将来の実装）

### EDD統合の準備

現在のライセンス管理は最小限の実装です。将来的にEDD（Easy Digital Downloads）と統合する際は：

1. **give-directions-pro.php** の定数を設定：

```php
define('GIVE_DIRECTIONS_PRO_STORE_URL', 'https://your-store.com');
define('GIVE_DIRECTIONS_PRO_ITEM_ID', 123);
define('GIVE_DIRECTIONS_PRO_ITEM_NAME', 'Give Directions Pro');
```

2. **includes/class-license.php** の `activate_license()` メソッドを実装：

```php
private function activate_license() {
    // EDDのAPIに問い合わせ
    $api_params = array(
        'edd_action' => 'activate_license',
        'license'    => $license_key,
        'item_id'    => GIVE_DIRECTIONS_PRO_ITEM_ID,
        'url'        => home_url()
    );
    
    $response = wp_remote_post(GIVE_DIRECTIONS_PRO_STORE_URL, array(
        'body' => $api_params
    ));
    
    // レスポンスを処理
}
```

## 本番環境へのデプロイ

### 無料版

1. `wp-config.php` から開発モードの定義を削除
2. 無料版をwordpress.orgに公開（オプション）

### Pro版

1. EDD統合を実装
2. ライセンス管理システムをテスト
3. EDDショップで販売開始

## トラブルシューティング

### Pro機能が動作しない

1. **Pro版プラグインが有効化されているか確認**
   - プラグイン一覧で「Give Directions Pro」が有効

2. **開発モードが有効か確認**
   - `wp-config.php` に `GIVE_DIRECTIONS_PRO_DEV` が定義されているか
   - ライセンスページで「開発モード（有効）」と表示されるか

3. **無料版のバージョンを確認**
   - Pro版は無料版のヘルパー関数に依存しています

### 制限が表示される

- Pro版が正しく有効化されていない可能性
- `give_directions_is_pro_active()` の戻り値を確認

### JavaScriptエラー

- `giveDirectionsConfig` が定義されているか確認
- ブラウザのコンソールでエラーをチェック

## 今後の開発予定

- [ ] 地図のカスタマイズ機能（配色、マーカーの色など）
- [ ] スライダーのカスタマイズ機能（配置、自動再生など）
- [ ] EDD Software Licensingの完全統合
- [ ] 自動アップデート機能
- [ ] インポート/エクスポート機能

## サポート

質問や問題がある場合は、以下にお問い合わせください：

- Email: support@hidakaya.net
- Website: https://hidakaya.net/

