Feature: Add Classic Editor & Standard HTML Support for Post Import/Export (PushMd)
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
Direzione di ricerca
Inizia con Push_MD_Plugin e segui i percorsi di importazione/esportazione attraverso Push_MD_Markdown_Consumer e Push_MD_Markdown_Producer. Esamina le API di WordPress indicate per il rilevamento dell’editor e i requisiti di Push_MD_HTML_Converter. Il lavoro è completato quando i post dell’editor a blocchi mantengono il comportamento di Gutenberg, mentre i post di Classic Editor e quelli in HTML standard vengono convertiti correttamente in entrambe le direzioni, inclusi metadati e formattazione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Overview
Currently, Push MD assumes all WordPress posts use the Gutenberg Block Editor and wraps content in block comments (e.g., <!-- wp:paragraph -->). On sites or post types where the Classic Editor is active (or where Gutenberg is disabled), importing Markdown yields block-comment markup in plain HTML editors, while exporting classic HTML posts is broken and even simple headings and lists do not convert to clean Markdown.
I understand Gutenberg is much cleaner to implement and HTML can be messy. But a lot of people still use Classic Editor or hand coded HTML.
We should support Classic Editor and non-block post types natively during both import (Markdown → HTML) and export (HTML → Markdown).
Note: I've already implemented this and will be sending a PR soon. Creating this issue for reference.
Technical Plan
1. Editor Detection Strategy
- Introduce a helper method
is_block_editor_enabled( $post_type )inPush_MD_Plugin:- Check WordPress core's
use_block_editor_for_post_type( $post_type )when available. - Fall back to checking if
register_block_typeexists. - Provide a filter
push_md_use_block_editorallowing developers to override the decision per post type.
- Check WordPress core's
2. Markdown Consumer Wrapper (Push_MD_Markdown_Consumer)
- Wrap
WordPress\Markdown\MarkdownConsumerto handle classic editor post targets (because we may not want to modify the vendor components):- When block editor is enabled for the target post type: delegate directly to
MarkdownConsumerto return Gutenberg block markup. - When block editor is disabled for the target post type:
- Consume Markdown via
MarkdownConsumer. - Strip Gutenberg block comment wrappers (e.g.,
<!-- wp:... -->and<!-- /wp:... -->). - Remove block-specific CSS classes (
wp-block-*). - Normalize excess blank lines to output clean standard HTML suitable for the Classic Editor.
- Consume Markdown via
- When block editor is enabled for the target post type: delegate directly to
3. Markdown Producer Wrapper (Push_MD_Markdown_Producer)
- Wrap
WordPress\Markdown\MarkdownProducerto handle posts without block markup (because we may not want to modify the vendor components):- Detect whether content contains Gutenberg blocks (
has_blocks( $content )or fallback delimiter check<!-- wp:). - Gutenberg content: Delegate to
MarkdownProducerand normalize the output Markdown. - Classic/Standard HTML content: Extract post metadata into YAML frontmatter and convert standard HTML into clean Markdown.
- Detect whether content contains Gutenberg blocks (
4. HTML to Markdown Converter (Push_MD_HTML_Converter)
- Provide bidirectional conversion and normalization utilities for HTML/Markdown:
- Convert standard HTML tags (headings, paragraphs, lists, links, blockquotes, inline formatting) into idiomatic Markdown.
- Handle list items, line breaks, and paragraph spacing cleanly without redundant blank lines.
- Provide normalization routines for produced Markdown output - for common quirks like extra spaces, non-breaking spaces etc.
- Lingua principale
- PHP
- Stelle
- 22
- Fork
- 5
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Automattic/php-toolkit
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
Automattic/php-toolkit#89 ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
Automattic/php-toolkit#102 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 76/100
Automattic/php-toolkit#95 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
Automattic/php-toolkit#88 ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
Automattic/php-toolkit#87 ·
Tutte le issue di Automattic/php-toolkit
Issue simili
-
[Chore] Keep one viget-block-generator skill and replicate it, instead of four tracked copies Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
hector-jewell/food-delivery-system-for-restaurant-using-php#1311 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
Sylius/SyliusGridBundle#501 ·