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(): 投稿フローのメインエントリポイント。- 投稿条件チェック(ステータス、レート制限、重複チェック)。
prepare_post()でテンプレート処理。- 各サービスの
ServicePost->send_post()を呼び出し。 - 結果をログ保存、メタデータ更新 (
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で定義を書き換えている可能性がある。