背景
feedwright_feed 投稿タイプは public=true / publicly_queryable=true で登録されており、Gutenberg の編集画面から 通常投稿と同じワークフローでプレビュー・公開ができる:
- ステータス切替(下書き / 公開予約 / 公開)
- 「保存して下書き」「プレビュー」「公開」ボタン
- 「Feed を表示」リンク(
PostType::filter_permalink で /feedwright/{slug}/ に誘導)
そのため、独自に追加していた 「Feedwright XML プレビュー」サイドバーパネルは二重実装になっており不要。タブごと削除する。
削除対象
Frontend
blocks/_shared/XmlPreviewPanel.jsx(PluginSidebar 実装)
blocks/element/index.js の import XmlPreviewPanel と registerPlugin( 'feedwright-xml-preview', ... ) 呼び出し
blocks/_shared/editor.css の preview pane 関連スタイル
Backend
src/REST/PreviewController.php(REST エンドポイント /wp-json/feedwright/v1/preview/{id})
src/Plugin.php の PreviewController 登録行
src/Routing/FeedEndpoint.php の serve_preview() / is_preview_request() および ?feedwright_preview=1 の処理(パネルが唯一の発火元なので、削除後は dead code)
Tests
tests/Integration/RestControllersTest.php から preview 関連テスト 5 本を削除
tests/Integration/FeedEndpointTest.php に ?feedwright_preview=1 関連があれば併せて削除
Docs
docs/requirements.md §10.3「Preview mode」セクション削除
- §16 REST 章から preview endpoint 記述削除
- §22 Phase 5 のプレビュー関連 acceptance criteria 削除
- §10.2 の
feedwright_preview クエリ var への参照を整理
i18n
- POT / PO / MO / JED の再生成(XmlPreviewPanel 由来の文字列が消える)
注意点
- 通常 WP の preview は
?preview=true&p={id}&preview_nonce={n} 形式。publicly_queryable=true なので core が CPT 用ルートに dispatch する。
- ただし現状の
Routing\FeedEndpoint::maybe_serve_feed() は feedwright_feed_slug クエリ var しか見ていないため、core の標準 preview は theme 側の single テンプレートにフォールバックして XML が返らない可能性が高い。
- 下書き状態でプレビューするユーザ体験を維持するなら、core の preview パスをフックして XML レンダラに dispatch する小さな対応が併せて必要。本 issue のスコープでは、まず削除を行ってから、必要に応じて別 issue で「core preview path への対応」を切る方針とする。
- 公開済みフィードの「Feed を表示」リンクは
PostType::filter_permalink 経由で動くので、削除後も影響なし。
受け入れ基準
影響範囲(おおよそのファイル数)
- 削除:2 ファイル(
XmlPreviewPanel.jsx、PreviewController.php)
- 修正:6〜8 ファイル(block index、Plugin、FeedEndpoint、テスト、docs、i18n)
背景
feedwright_feed投稿タイプはpublic=true/publicly_queryable=trueで登録されており、Gutenberg の編集画面から 通常投稿と同じワークフローでプレビュー・公開ができる:PostType::filter_permalinkで/feedwright/{slug}/に誘導)そのため、独自に追加していた 「Feedwright XML プレビュー」サイドバーパネルは二重実装になっており不要。タブごと削除する。
削除対象
Frontend
blocks/_shared/XmlPreviewPanel.jsx(PluginSidebar 実装)blocks/element/index.jsのimport XmlPreviewPanelとregisterPlugin( 'feedwright-xml-preview', ... )呼び出しblocks/_shared/editor.cssの preview pane 関連スタイルBackend
src/REST/PreviewController.php(REST エンドポイント/wp-json/feedwright/v1/preview/{id})src/Plugin.phpのPreviewController登録行src/Routing/FeedEndpoint.phpのserve_preview()/is_preview_request()および?feedwright_preview=1の処理(パネルが唯一の発火元なので、削除後は dead code)Tests
tests/Integration/RestControllersTest.phpから preview 関連テスト 5 本を削除tests/Integration/FeedEndpointTest.phpに?feedwright_preview=1関連があれば併せて削除Docs
docs/requirements.md§10.3「Preview mode」セクション削除feedwright_previewクエリ var への参照を整理i18n
注意点
?preview=true&p={id}&preview_nonce={n}形式。publicly_queryable=trueなので core が CPT 用ルートに dispatch する。Routing\FeedEndpoint::maybe_serve_feed()はfeedwright_feed_slugクエリ var しか見ていないため、core の標準 preview は theme 側のsingleテンプレートにフォールバックして XML が返らない可能性が高い。PostType::filter_permalink経由で動くので、削除後も影響なし。受け入れ基準
/wp-json/feedwright/v1/preview/{id}が 404 を返す?feedwright_preview=1でアクセスしても 404(または通常の feed 配信に統合)/feedwright/{slug}/で feed XML を返すcomposer test:unit+ wp-env tests)composer phpcsグリーンdocs/requirements.mdから削除済みエンドポイントへの参照が無くなっている影響範囲(おおよそのファイル数)
XmlPreviewPanel.jsx、PreviewController.php)