コンテンツにスキップ

運用・保守マニュアル (Operations Guide)

本ドキュメントは、システム管理者向けの運用、トラブルシューティング、および手動対応手順をまとめたものです。

1. トラブルシューティング

Q. Storeでサブスク更新したのにMainに反映されない

原因1: 通信エラー StoreからMainへのAPIリクエストが失敗している可能性があります。 * 確認方法: Storeサイトの wp-content/debug.log (有効化されている場合) を確認してください。「SLM Sync Error」という文字列で検索します。 * 対応: Mainサイトがダウンしていないか、FWで遮断されていないか確認してください。

原因2: シークレットキーの不一致 * 確認方法: 両サイトの wp-config.php を開き、定義されているKEYが完全に一致しているか確認してください。スペースなどが混入していないか注意が必要です。

原因3: ユーザー名の不一致 * 確認方法: Storeサイトの購入ユーザーの「ユーザー名 (User Login)」と、Mainサイトのユーザー名が一致しているか確認してください。メールアドレスではなく ユーザー名 で紐付けを行っています。


2. 管理・モニタリング機能

Active Sites (稼働サイト一覧・分析)

Storeサイトの管理画面サイドメニューにある [Active Sites] から、現在ライセンスが有効化されているドメインの一覧と、稼働状況の分析ダッシュボードを確認できます。

1. Analytics Dashboard

ページ上部に表示されるダッシュボードです。 * Total Sites: 有効な全サイト数。 * New Today: 本日新しく有効化(再有効化含む)されたサイト数。 * Filter: 期間(7日〜365日)および製品名での絞り込みが可能です。 * Chart: 期間内の「日次アクティベーション数(右軸)」と「累計アクティブ数(左軸)」の推移を表示します。

2. サイト一覧リスト

  • これは slm_site というカスタム投稿タイプで管理されています。
  • 製品名: cross-poster-pro のようなスラッグは、表示上 Cross Poster Pro のように整形されます(内部データは変更されません)。
  • Installed: 初回有効化日。
  • Last Checked: 最後のライセンスチェック(日次Ping)日時。
  • 操作: 必要に応じて手動で削除(Trash)することで、強制的にライセンスを無効化できます。

3. 仕様解説: 埋め込みライセンスキー

本システムでは、ユーザー体験向上のため 「埋め込みライセンスキー (Embedded License Key)」 機能を実装しています。

  1. 動的Zip生成: ユーザーがダウンロードボタンを押すと、サーバー上でオリジナルのZipファイルをコピーします。
  2. キー注入: コピーしたZip内に license-key.php というファイルを追加し、そこにユーザー固有のライセンスキーを書き込みます。
  3. 自動認証: クライアントプラグインは、有効化直後にこのファイルを探し、存在すれば自動的にライセンス認証APIを叩きます。

注意点: * この処理のため、Storeサーバーでは ZipArchive クラス(PHP拡張)が必須です。 * /slm/v1/download エンドポイントを経由しない直接ダウンロード(メディアライブラリからのDLなど)では、キーは埋め込まれません。


4. 手動リカバリー手順 (Manual Fix)

自動連携が失敗した場合、Mainサイトのデータベースを直接編集することでステータスを修正できます。

データベース/ユーザーメタの編集

Mainサイトの管理画面、またはphpMyAdmin等が使えない場合でも、管理画面の「ユーザー編集」ページからは見えない隠しフィールドを更新する必要があります。 (※ Store Sync Receiver プラグインには現時点で管理画面UIはありません)

方法A: データベース直接編集

wp_usermeta テーブルを編集します。

  1. 対象ユーザーの ID を特定します。
  2. 以下のクエリを実行/確認します。
-- ステータスをActiveにする
UPDATE wp_usermeta SET meta_value = 'active' 
WHERE user_id = {USER_ID} AND meta_key = 'storesync_license_cross-poster-pro';

-- 有効期限を更新する (例: 2026年12月31日)
UPDATE wp_usermeta SET meta_value = '2026-12-31 23:59:59' 
WHERE user_id = {USER_ID} AND meta_key = 'storesync_license_cross-poster-pro_expires_at';
/* 注意: プラグインのバージョンによって meta_key は storesync_license_{slug} (配列) か個別キーか異なります。
   現在の v1.1.0 実装では serialized array で保存されています! */

【重要】現在の実装 (v1.1.0) での正しい修正方法 storesync_license_cross-poster-pro というキーに、以下の配列がシリアライズされて保存されています。

array(
    'status' => 'active',
    'expires_at' => '2025-12-31 00:00:00',
    'updated_at' => '...'
)
SQLで直接シリアライズデータをいじるのは危険ですので、以下の ヘルパースクリプト をテーマの functions.php 等に一時的に貼って実行することを推奨します。

方法B: 緊急用ヘルパースニペット

// 指定ユーザーのライセンスを強制的に有効化する
$user = get_user_by( 'login', 'ターゲットユーザー名' );
if ( $user ) {
    update_user_meta( $user->ID, 'storesync_license_cross-poster-pro', array(
        'status' => 'active',
        'expires_at' => '2026-12-31 23:59:59',
        'updated_at' => current_time( 'mysql' )
    ));
    echo "Fixed user license.";
}

5. 全件再同期 (Future Work)

現在、Storeサイト全ユーザーのステータスを一括でMainサイトに送信する機能はありません。 将来的にデータの不整合が大きくなった場合は、Software License Manager に「全件同期バッチ処理」を追加開発することを検討してください。