# HStorage Media Storage

**Contributors:** hcloudltd  
**Tags:** media, storage, cloud, cdn, hstorage  
**Requires at least:** 5.0  
**Tested up to:** 6.9  
**Requires PHP:** 8.1  
**Stable tag:** 1.0.0  
**License:** GPLv2 or later  
**License URI:** https://www.gnu.org/licenses/gpl-2.0.html

Store WordPress media files on HStorage cloud storage service.

---

WordPress のメディアファイルを [HStorage](https://hstorage.io) クラウドストレージサービスに保存するプラグインです。

## 概要

HStorage Media Storage は、WordPress のメディアライブラリにアップロードされたファイルを自動的に HStorage クラウドストレージにアップロードします。これにより、サーバーのストレージ容量を節約し、CDN を通じた高速なコンテンツ配信が可能になります。

## 要件

- WordPress 5.0 以上
- PHP 7.4 以上
- OpenSSL PHP 拡張機能
- HStorage アカウント

## インストール

### 手動インストール

1. このリポジトリをダウンロードまたはクローンします
2. `hstorage-wordpress-plugin` フォルダを `/wp-content/plugins/` ディレクトリにアップロードします
3. WordPress 管理画面の「プラグイン」メニューからプラグインを有効化します

### Composer を使用する場合

```bash
composer require rluisr/hstorage-wordpress-plugin
```

## 設定

1. プラグインを有効化すると、自動的に設定ページにリダイレクトされます
2. 「設定」→「HStorage」に移動します
3. 以下の情報を入力します：
   - **メールアドレス**: HStorage アカウントに登録したメールアドレス
   - **API キー**: HStorage ダッシュボードから取得した API キー
   - **シークレットキー**: HStorage ダッシュボードから取得した 32 文字のシークレットキー
4. 「変更を保存」をクリックします
5. 「接続テスト」ボタンをクリックして、認証情報が正しいことを確認します

## 使用方法

設定が完了すると、メディアライブラリにファイルをアップロードするたびに自動的に HStorage にアップロードされます。

- **アップロード**: メディアファイルは自動的に HStorage にアップロードされ、URL が HStorage の CDN URL に置き換えられます
- **削除**: WordPress でメディアを削除すると、HStorage からも自動的に削除されます

## セキュリティ

- API キーはデータベースに保存される前に AES-256-GCM で暗号化されます
- WordPress の SECURE_AUTH_KEY を使用して暗号化キーを派生します
- すべての API 通信は HTTPS 経由で行われます
- nonce とケイパビリティチェックにより CSRF/権限攻撃を防止します

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

### 接続テストに失敗する

1. API キー、シークレットキー、メールアドレスが正しいことを確認してください
2. シークレットキーが正確に 32 文字であることを確認してください
3. HStorage ダッシュボードで API キーが有効になっていることを確認してください

### ファイルがアップロードされない

1. WordPress のデバッグログを有効にして、エラーを確認してください：
   ```php
   define( 'WP_DEBUG', true );
   define( 'WP_DEBUG_LOG', true );
   ```
2. `wp-content/debug.log` で `[HStorage]` プレフィックスのエントリを確認してください
3. PHP の OpenSSL 拡張機能が有効になっていることを確認してください

### 日本語が表示されない

WordPress の言語設定が日本語（ja）に設定されていることを確認してください。

## 開発

### ファイル構造

```
hstorage-wordpress-plugin/
├── hstorage.php              # メインプラグインファイル
├── includes/
│   ├── class-hstorage.php          # メインクラス（シングルトン）
│   ├── class-hstorage-admin.php    # 管理画面クラス
│   ├── class-hstorage-api.php      # API 通信クラス
│   └── class-hstorage-crypto.php   # 暗号化クラス
├── admin/
│   ├── css/
│   │   └── hstorage-admin.css      # 管理画面スタイル
│   └── js/
│       └── hstorage-admin.js       # 管理画面スクリプト
├── languages/
│   ├── hstorage.pot               # 翻訳テンプレート
│   └── hstorage-ja.po             # 日本語翻訳
└── README.md
```

### フック

プラグインは以下の WordPress フックを使用します：

- `wp_handle_upload` - ファイルアップロードをインターセプト
- `add_attachment` - アップロード後のメタデータ保存
- `delete_attachment` - ファイル削除の同期

## ライセンス

GPL-2.0-or-later

## 作者

[HCloud Ltd](https://hstorage.io)

## 変更履歴

### 1.0.0

- 初回リリース
- HStorage への自動アップロード機能
- WordPress メディアライブラリとの統合
- 管理画面設定ページ
- 接続テスト機能
- 日本語翻訳
- セキュアな認証情報保存
