コンテンツにスキップ

Architecture Overview - Cross Poster & Pro

概要

cross-poster(無料版)と cross-poster-pro(有料版アドオン)のアーキテクチャ概要。

リポジトリ構造

1. Cross Poster (Core)

takao-dev/cross-poster

  • cross-poster.php: メインプラグインファイル。定数定義、クラスのオートロード、初期化を行う。
  • includes/: コアロジック。
    • class-core.php: ServiceManager, SettingsHelper, ServiceSettings (abstract), ServicePost (abstract), ApiClient (abstract) を含む中核ファイル。
    • admin.php: 管理画面UIロジック。
    • utils.php: ユーティリティ関数群 (crp_log 等)。
  • services/: 各プラットフォームごとの実装 (X, Mastodon, Bluesky, Misskey, Threads)。
    • 各ディレクトリ内に Settings クラス(設定画面・認証)と Post クラス(投稿処理)を持つ。

2. Cross Poster Pro (Add-on)

takao-dev/cross-poster-pro

  • cross-poster-pro.php: アドオンのメインファイル。
  • includes/: Pro機能の実装。
    • class-pro-core.php: Pro版の初期化、ライセンスチェック等。
    • class-pro-settings.php: Pro版特有の設定処理。
    • modules/: 機能モジュール(マルチアカウント、予約投稿、アナリティクス等)。

アーキテクチャ詳細 (Core)

ServiceManager

  • 役割: 全サービスの定義管理、接続状態チェック、投稿プロセスのオーケストレーション。
  • get_definitions(): 対応サービスとその設定クラス、投稿クラスのマッピングを定義。crp_definitions フィルターで拡張可能。
  • post_service(): 投稿フローのメインエントリポイント。
    1. 投稿条件チェック(ステータス、レート制限、重複チェック)。
    2. prepare_post() でテンプレート処理。
    3. 各サービスの ServicePost->send_post() を呼び出し。
    4. 結果をログ保存、メタデータ更新 (post_submit_handler)。

拡張性 (Extensibility)

  • 抽象クラス: ServiceSettings, ServicePost を継承することで新しいサービスを追加可能。
  • Hooks:
    • crp_definitions: 新しいサービスの追加。
    • crp_service_enabled: サービスごとの有効/無効制御。
    • crp_do_{service}_post: 投稿直前のキャンセルや変更。
    • crp_post_posted: 投稿成功後のフック。

アーキテクチャ詳細 (Pro)

  • Coreプラグインのフックを利用して機能を拡張していると推測される。
  • 例えば、マルチアカウント機能は ServiceSettings の接続情報取得部分や ServicePost のトークン取得部分をフック、あるいは crp_definitions で定義を書き換えている可能性がある。