Feature: Add Classic Editor & Standard HTML Support for Post Import/Export (PushMd)
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
Línea de trabajo
Comienza con Push_MD_Plugin y sigue las rutas de importación/exportación a través de Push_MD_Markdown_Consumer y Push_MD_Markdown_Producer. Revisa las APIs de WordPress mencionadas para la detección del editor y los requisitos de Push_MD_HTML_Converter. Se considera terminado cuando las entradas del editor de bloques conservan el comportamiento de Gutenberg, mientras que las entradas de Classic Editor y de HTML estándar se convierten correctamente en ambas direcciones, incluidos los metadatos y el formato.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- PHP
- Estrellas
- 22
- Forks
- 5
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Automattic/php-toolkit
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Automattic/php-toolkit#89 ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
Automattic/php-toolkit#102 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 76/100
Automattic/php-toolkit#95 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
Automattic/php-toolkit#88 ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
Automattic/php-toolkit#87 ·
Todos los issues de Automattic/php-toolkit
Issues similares
-
Solved site promotion gate fails on runner PHP patch drift (expects 8.2.33, runner installs 8.2.34) Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Automattic/blocks-engine#2161 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Automattic/static-site-importer#1824 ·
-
[Chore] Keep one viget-block-generator skill and replicate it, instead of four tracked copies Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
Cannot reset column width Abierto0. Needs triage bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
0. Needs triage 35-feedback bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100