Appearance
ADM-11 min-repo データ取得 管理画面
概要
- min-repo.com からの 差枚データ取得・インポート、Cookie 設定、HTML インポート、本番転送、CSV エクスポートを行うローカル専用管理画面。
- 定数
MIN_REPO_SCRAPE_COOKIEが定義されている場合は定数が優先され、オプション値はmin_repo_scrape_cookieフィルター経由で参照される(未定義時にオプションが供給される)。 - 手動貼り付け保存に加え、ローカルヘルパーから REST API で送信する経路を案内する。
外部インターフェース
管理画面 URL
| 項目 | 値 |
|---|---|
| URL | /wp-admin/admin.php?page=min-repo-data-admin |
| メニュー名 | min-repo データ取得 |
| 権限 | manage_options |
フォーム POST(同期)
POST admin.php?page=min-repo-data-admin。
min_repo_cookie_action 値 | 処理 |
|---|---|
save | Cookie 保存 |
Nonce フィールド: min_repo_cookie_nonce(検証アクション: min_repo_cookie_admin)
POST パラメータ
| フィールド | 説明 |
|---|---|
min_repo_cookie_value | 生 Cookie 文字列。制御文字除去・前後 trim。最大長は MinRepoCookieOption::MAX_COOKIE_LENGTH(8192 バイト) |
リダイレクト後クエリ(通知)
| クエリ | 内容 |
|---|---|
mrc_success | 1 / 0 |
mrc_msg | メッセージ |
REST API(ヘルパー用)
| 項目 | 値 |
|---|---|
| メソッド | POST |
| ルート | /wp-json/slot-kouryaku/v1/min-repo-cookie(rest_url( 'slot-kouryaku/v1/min-repo-cookie' )) |
| ボディ | JSON {"cookie":"..."}(cookie 必須。印字可能 ASCII のみ許可など検証あり) |
| 認証 | アプリケーションパスワードによる Basic 認証(画面内ヘルプ参照)。実装は MinRepoCookieHandler+PermissionChecker |
成功時 HTTP 200、失敗時 400 / 500 と message を JSON で返す。
データ
wp_options
| キー | 説明 |
|---|---|
slot_kouryaku_min_repo_scrape_cookie | 保存 Cookie 文字列(MinRepoCookieOption::OPTION_NAME) |
エラー
| 条件 | ユーザー向け挙動 | メッセージ例 |
|---|---|---|
| nonce 不正 | リダイレクト | Messages::AUTH_FAILED |
| Cookie 空 | リダイレクト | MinRepoMessages::COOKIE_PLEASE_INPUT |
| 長さ超過 | リダイレクト | MinRepoMessages::COOKIE_TOO_LONG(フォーマット付き) |
update_option 失敗 | リダイレクト | MinRepoMessages::COOKIE_SAVE_FAILED |
変更履歴(設計書)
| 日付(JST) | 変更内容 | コード側の対応(PR 等) |
|---|---|---|
| 2026-04-21 | 初版作成 | — |
| 2026-07-07 | 「対象ページを開く」ボタンの検証ログセクションを追加 | PR #2655 |
| 2026-07-07 | 試行2失敗(HTTP 401)を記録し、試行3(固定URL)を採用 | PR #2655 |
| 2026-07-07 | ボタンラベル・説明文の整理、未使用 hallTagIds 削除 | PR #2656 |
検証ログ(データ一覧ページを開くボタン)
HTML インポートセクションの「データ一覧ページを開く」ボタンについて、試行した方式と結果を記録する。
| 試行 | 方式 | 結果 | 詳細 |
|---|---|---|---|
| 1 | クライアント(ブラウザ)から min-repo.com の REST API へ直接 fetch() | 失敗 | Failed to fetch。CORS または WAF によりブロックされたと推定 |
| 2 | サーバー側 wp_remote_get() 経由(admin-ajax、Chrome UA・ブラウザヘッダー付与、24時間 Transient キャッシュ) | 失敗 | REST API が HTTP 401 を返却(fetch_json failed ... reason=HTTP 401)。未認証の自動アクセスは min-repo.com 側で拒否されたと推定。フォールバックでデータ一覧ページは開けた |
| 3 | ホール別固定 URL(データ一覧ページ)を直接開く(REST API 不使用) | 採用 | 試行1・2と同様のブロックを回避。ユーザーが一覧から該当日の記事を手動で開く運用 |
失敗した場合は HTTP ステータス・レスポンスヘッダー等(WP_DEBUG 時のログ参照)も追記する。