WordPress importer
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 20/100
調査の方向性
まず、要件で参照されている WordPress の XML エクスポート形式と、Wagtail のページ、画像、ドキュメントのモデルを確認します。実装前に、コンテンツタイプ、メディア、URL、リダイレクトを含むブログ投稿インポートの MVP を定義します。スコープとマッピングのワークフローについて合意できた時点を完了とします。
索引モデルが issue の本文から書いたものです。
説明
Yes, the holy grail of wagtail, a complete WordPress importer. Opening this issue here to jot down notes and learnings from various site migrations, so we can figure out what a WordPress importer actually needs to do. For reference, WP=WordPress and CR=CodeRed CMS here.
The WordPress site importer would probably be run first, before populating any content or pages on the site. I would not imagine supporting a use-case where the importer is run after you already have content. It would be much simpler to run it on a clean slate.
To avoid over-engineering, the main goal or minimum viable product would be importing blog posts, as there are usually usually hundreds of them and it is a tedious process to manually replicate.
Base requirements:
- Use the XML format created natively by WP from the "export" functionality. This file should contain all of the information needed.
- WP has two content types: Posts and Pages (which are actually posts). But many plugins create custom post types, so there is no easy way to handle this. So I'm thinking the first step would be to analyze the XML file and determine what types exist. The user would then somehow specify or map which WP post types in correspond to which CR page types or snippets. The importer should probably handle this analysis and provide some sort of template or UI for the user to map the content types. An easy assumption to make would be that all WP pages map to CR WebPage, and all WP posts map to CR ArticlePage.
- The importer would then use the user mapping, to run that against the XML file.
- During import, media would be downloaded from the old site and saved as a wagtail image or document. The reference to that media would also need to be updated within the post content so wagtail knows which image to use.
- During import, the URL of each page would need to be set, and if the old URL is different from the new URL (possibly specified during user mapping?) then a redirect should be created.
- As a baseline, content of WP pages/posts could be saved in a CR rich text field in the body, or even more of a baseline, as an HTML field directly in the body. The HTML field would be the easiest to implement, with the assumption that a content editor would have to go through the pages and manually "massage" the content into a new format. Older blog posts etc could simply keep the content in HTML for posterity.
Possible advanced features:
- Ability to handle shortcodes. Most likely this would work that during XML analysis, a list of shortcodes would be presented. During the user mapping process the user could specify how to handle each short code. I.e. a shortcode could get mapped to a specific block, or could simply be deleted or ignored.
- Special handling of Yoast SEO data, this would get mapped into the appropriate SEO fields in CR.
- Special handling of form plugins. It would be nearly impossible to support them all, but Contact Form 7 is a big one.
Other notes or major concerns: WordPress 5.0 has introduced Gutenberg editor, which I'm quite certain stores the data in a completely different format than the old editor. I'm sure this will need to be accounted for in the importer.
- 主要言語
- Python
- スター
- 761
- フォーク
- 153
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドなし
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
coderedcorp/coderedcms のほかの issue
-
Type: Bug
難易度 1/5 1時間未満 初心者へのやさしさ 78/100
coderedcorp/coderedcms#714 ·
-
Type: Bug
難易度 1/5 1時間未満 初心者へのやさしさ 65/100
coderedcorp/coderedcms#711 ·
-
Type: Bug
難易度 3/5 1〜2日 初心者へのやさしさ 45/100
coderedcorp/coderedcms#713 · コメント 1 件 ·
-
Form submissions return 404 with Wagtail 7.x due to FormMixin isinstance check対応中かも @bradrice が 82 日前に担当しました。 オープン
難易度 4/5 3〜5日 初心者へのやさしさ 55/100
coderedcorp/coderedcms#710 · コメント 4 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 58/100
coderedcorp/coderedcms#709 ·
coderedcorp/coderedcms の issue をすべて見る
似ている issue
-
Link Checker Reportオープンautomated issue report
難易度 1/5 1時間未満 初心者へのやさしさ 85/100
RapidAI/RapidOCRDocs#119 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
btclib-org/btclib-node#1833 ·
メンテナーはふだん 1 日以内に返信
-
IRIS reader: no-data velocity bins (DB_VEL, DB_VELC) returned as 0.0 m/s instead of NaN対応中かも @syedhamidali が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 2 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 80/100
elodin-sys/elodin#890 ·
メンテナーはふだん 1 日以内に返信