Automattic / Automattic/php-toolkit

Feature: Add Classic Editor & Standard HTML Support for Post Import/Export (PushMd)

Aperta
#91 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
PHP
Stelle
22
Fork
5
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

## Overview
Currently, Push MD assumes all WordPress posts use the Gutenberg Block Editor and wraps content in block comments (e.g., ``). 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 )` in `Push_MD_Plugin`:
- Check WordPress core's `use_block_editor_for_post_type( $post_type )` when available.
- Fall back to checking if `register_block_type` exists.
- Provide a filter `push_md_use_block_editor` allowing developers to override the decision per post type.

### 2. Markdown Consumer Wrapper (`Push_MD_Markdown_Consumer`)
- Wrap `WordPress\Markdown\MarkdownConsumer` to 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 `MarkdownConsumer` to 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., `` and ``).
- Remove block-specific CSS classes (`wp-block-*`).
- Normalize excess blank lines to output clean standard HTML suitable for the Classic Editor.

### 3. Markdown Producer Wrapper (`Push_MD_Markdown_Producer`)
- Wrap `WordPress\Markdown\MarkdownProducer` to 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 `

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

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.

Valutazione

Stack tecnologico
php, wordpress
Ambito
backend, content
Tipo di issue
Funzionalità
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.