Post Formats for Block Themes brings the beloved post format functionality from classic WordPress themes to modern block themes, with intelligent pattern insertion, automatic format detection, and a streamlined editing experience that makes creating formatted content effortless.
Why Post Formats Matter for Block Themes
WordPress post formats have been a powerful feature since WordPress 3.1, allowing content creators to style different types of posts distinctively—quotes appear with enhanced typography, galleries showcase images prominently, status updates feel like social media, and chat transcripts display conversations beautifully. However, with the shift to block themes and Full Site Editing, this functionality was left behind.
Post Formats for Block Themes solves this problem. This plugin brings post formats into the block editor era with format-specific block patterns, automatic content detection, and accessibility-first design. Whether you're building a personal blog, portfolio, news site, or creative magazine, post formats help your content stand out.
Who This Plugin Is For
- Bloggers who want variety in their post presentations without creating custom templates
- Content creators who publish different types of content (articles, quotes, galleries, status updates)
- News sites migrating from classic themes and want to preserve post format functionality
- Designers and developers building block themes who need format support built-in
- Accessibility advocates who require WCAG 2.2 AA compliant content tools
- Anyone moving from classic themes who misses the post format features they relied on
Key Features
10 Format-Specific Block Patterns
Each WordPress post format gets a professionally-designed block pattern optimized for its content type. Patterns include locked first blocks to maintain format consistency while giving you complete creative freedom for additional content:
- Standard – Traditional blog post with full title, featured image, and content blocks
- Aside – Short note or update displayed in a styled bubble container without title requirement
- Status – Twitter-style status update with 280-character validation and real-time counter
- Link – Link sharing with automatic Bookmark Card integration when available, with graceful fallback to standard linked paragraphs
- Gallery – Photo gallery starting with a locked gallery block for image collections
- Image – Single image post with prominent image display and caption support
- Quote – Quotation or citation with enhanced pullquote styling and attribution
- Video – Video content using native video blocks or popular embed services. Integrates with Able Player for enhanced accessible playback when available.
- Audio – Audio file or podcast embed with native player styling. Integrates with Podlove Podcasting Plugin for podcasts and Able Player for accessible playback when available.
- Chat – Conversation transcript using the integrated Chat Log block
Integrated Chat Log Block
No separate plugin needed! Post Formats for Block Themes includes a full-featured Chat Log block for displaying conversation transcripts. Perfect for interviews, customer support examples, team discussions, or any dialogue format.
Supported platforms: Slack, Discord, Microsoft Teams, WhatsApp, Telegram, Signal, and generic chat transcripts. Additional text format support: SRT subtitles, VTT captions, and plain text exports from any chat application.
Chat Log features: automatic platform detection, avatar display, timestamp formatting (relative, absolute, time-only), multiple display styles (bubbles, IRC, transcript, timeline), thread collapsing, participant lists, device frames, full accessibility, and RTL support.
Automatic Format Detection
Save time with intelligent format detection. The plugin analyzes your post's first block and automatically assigns the appropriate format. Gallery block becomes Gallery format, video block becomes Video format, quote block becomes Quote format, and so on. Detection runs on post save and respects manual format selections.
Format Selection Modal
When creating a new post, a visual format selection modal appears with all 10 formats displayed as cards showing icons, names, descriptions, and use cases. Fully keyboard accessible and screen reader friendly.
Format Switcher Sidebar Panel
Change formats mid-edit with the Format Switcher in the post sidebar. View current format, see auto-detection suggestions, choose to replace content or keep existing blocks. Perfect for when you change your mind about post type.
Status Format Validation
The Status format includes Twitter-style character validation with real-time counter, 280-character soft limit, visual feedback, accessibility announcements, and mobile-friendly composition.
Post Format Repair Tool
Scan existing posts and fix format mismatches with the built-in repair tool (Tools → Post Format Repair). Detects content/format mismatches, bulk or individual repairs, preview suggestions, one-click fixes. Perfect for migrating from classic themes.
Theme-Agnostic Styling
Format styles integrate seamlessly with any block theme using CSS custom properties from your theme.json. Respects your theme's colors, typography, spacing. No styling conflicts. Works with Global Styles.
How to Use Post Formats in Block Themes
Creating Your First Formatted Post:
- Navigate to Posts → Add New
- Format selection modal appears automatically
- Click your desired format (e.g., "Quote")
- Pattern is inserted with locked first block
- Add content within the pattern
-
Publish your formatted post
Mid-Edit Format Switching:
-
Open the right sidebar while editing
- Find the "Format Switcher" panel
- Choose a new format from dropdown
- Decide to replace or keep content
-
Format updates instantly
Using Auto-Detection:
-
Start a new post without selecting a format
- Add content (e.g., insert a gallery block)
- Save as draft or publish
- Plugin automatically detects Gallery format
- Format is assigned without manual action
How to Create a Quote Post
Showcase quotations and citations beautifully:
- Select Quote format from the modal
- The pullquote pattern loads with locked Quote block
- Type or paste your quote
- Add attribution in citation field
- Optional: Add commentary below the quote
- Customize styling via Global Styles
- Publish your enhanced quote post
The locked pullquote maintains format integrity while allowing unlimited additional content blocks.
How to Display Chat Conversations
Turn conversation transcripts into readable, attractive content:
- Select Chat format when creating new post
- Chat Log block inserts automatically
- Copy conversation text from Slack, Discord, Teams, WhatsApp, etc.
- Paste into Chat Log block—platform detection is automatic
- Configure display options: style, avatars, timestamps, threads, device frame
- Preview the formatted conversation
- Publish your beautiful chat transcript
Platform-specific features: Slack preserves channels, threads, reactions; Discord maintains server structure and roles; Teams retains meeting context; WhatsApp shows message status and reply chains; Telegram preserves stickers; Signal maintains message indicators.
How to Automatically Detect Post Formats
Let the plugin handle format assignment:
- Create new post without selecting format
- Add content normally (gallery, video, quote, etc.)
- Save draft or publish—detection runs on save
- Check Format Switcher panel for detected format
- Accept or manually override
Detection rules: first block determines format. Gallery block = Gallery format, Video block = Video format, Quote block = Quote format, and so on. Detection only runs on posts without manual format selection.
How to Repair Mismatched Formats
Fix format assignments across your entire site:
- Navigate to Tools → Post Format Repair
- Click "Scan All Posts"—analyzes content vs. formats
- Review mismatch report
- Preview suggestions for each post
- Bulk repair all or fix individually
- Verify changes
Common scenarios: migrating from classic themes, imported content, incorrect manual assignments, exploring your format distribution. The repair tool is safe—changes only format meta, never modifies post content.
Migrating from Classic Theme Post Formats
Preserve post format styling when switching to block themes:
Before Migration:
- Install plugin on classic theme site
- Leave classic theme active
- Test repair tool with scan (don't apply yet)
-
Review the report
During Migration:
-
Switch to block theme
- Activate Post Formats for Block Themes
- Visit Tools → Post Format Repair
- Run full scan
- Review suggestions
-
Apply bulk repair
After Migration:
-
Check frontend display
- Customize styling in theme.json
- Create new posts with format patterns
- Optional: update old posts to use patterns
What transfers: format assignments, post content, featured images, post meta. What changes: theme template styling becomes pattern styling, classic PHP templates become block templates. Tips: test on staging first, take database backup, check one post per format, customize theme.json colors, use patterns for new content.
Block Theme Compatibility Guide
What Makes a "Block Theme":
Block themes use block templates (.html files) and theme.json instead of PHP templates. Key characteristics: templates/ folder with .html files, theme.json file, Full Site Editing support, activated via Appearance → Themes. Learn more in the
WordPress Block Theme documentation.
Why Classic Themes Aren't Supported:
Classic themes use PHP template files which conflict with block-based patterns. This plugin requires block pattern support, block templates, theme.json styling, and block editor integration. If you prefer using a classic theme with post format support, consider using the
Twenty Thirteen theme which includes excellent built-in post format styling.
Recommended Compatible Block Themes:
Twenty Twenty-Five, Twenty Twenty-Four, Twenty Twenty-Three, Block themes from Automattic (Blank Canvas, Pendant), most modern block themes on
WordPress.org.
Theme.json Integration:
The plugin reads color palette, typography, spacing, and border styles from your theme.json. Format styles automatically adapt. To customize, edit your theme.json color and typography settings.
Developer Guide: Extending Post Formats
Add Custom Format:
php
add_filter( 'pfbt_registered_formats', function( $formats ) {
$formats['review'] = [
'name' => 'Review',
'description' => 'Product review',
'icon' => 'star-filled',
'pattern_slug' => 'my-theme/review-pattern',
];
return $formats;
} );
Custom Detection Logic:
php
add_filter( 'pfbt_detected_format', function( $format, $first_block, $all_blocks ) {
if ( $first_block['blockName'] === 'my-plugin/custom-block' ) {
return 'gallery';
}
return $format;
}, 10, 3 );
Run Code After Detection:
php
add_action( 'pfbt_format_detected', function( $post_id, $format, $post ) {
error_log( "Post {$post_id} detected as {$format}" );
}, 10, 3 );
Track Format Changes:
php
add_action( 'pfbt_format_changed', function( $post_id, $old_format, $new_format ) {
// Analytics tracking
}, 10, 3 );
More filters and actions available for pattern content modification, post-repair actions, and format definition customization.
2.3.0
WP 7.0 features, automatic format detection returns, and fixes across every format.
- New: Block Bindings source
post-formats/format-data — bind core block attributes to format name, label, icon, has_format, character count, media URL, or quote attribution.
- New: Format Badge block (
post-formats/format-badge), auto-inserted before post titles on non-standard formats via Block Hooks.
- New: SVG icon sets with a settings-page picker (
img/icon-sets/{slug}/format-icons.svg), filterable for custom sets.
- New: Chat Log block front-end interactivity via the Interactivity API, with thread grouping.
- Changed: automatic format detection is back on, with apply-once semantics — it applies once on first save from content and never overrides a manual choice.
- Fixed: Quote and Video patterns no longer trigger the "unexpected or invalid content" recovery prompt in the editor.
- Fixed: image, gallery, and quote style variations now load their CSS on block-theme front ends (previously registered but rendered unstyled); interactive gallery view modules load on demand the same way.
- Fixed: the format selection modal now waits for the WordPress welcome guide to be dismissed instead of stacking on top of it.
- Fixed: feature flags could silently fail to store an "off" value.
- Fixed: format analyzer no longer lets Status/Aside outrank strong structural matches; Chat speaker labels detect correctly across paragraph boundaries.
2.2.0
Added — 16 quote and pullquote block style variations.
- 16 quote variations registered on BOTH
core/quote and core/pullquote: post-it, notebook-scrap, typewriter, napkin, library-card, chalkboard, whiteboard, postcard, magazine-pull, broadsheet, decorative-marks, side-rule-editorial, speech-bubble, message-bubble, comment-card, plaque.
- Variations apply to the quote block ITSELF, not inner content. Each leads with a chrome-reset (zeroes default left border, padding, italic body) before drawing its own design — no inner Group/Paragraph wrapping needed.
- Citation built into every variation: styled when present, hidden via
cite:empty { display: none; } when empty.
- New
quote_styles feature flag, default off — independent of v2.1.0's image_gallery_styles. Flip via add_filter( 'pfbt_feature_quote_styles', '__return_true' ).
patterns/quote.php defaults to is-style-side-rule-editorial (the most minimal of the 16, intentionally chosen as the editor-default).
- New
pfbt_quote_style_variations filter for theme/plugin extension. Per-entry block_names field overrides the default dual-block registration.
2.1.0
Added — 36 image and gallery block style variations.
- 16 image block style variations on
core/image: rounded, circle, soft-shadow, tinted-border, caption-card, polaroid, postcard, photo-strip, magazine-cutout, index-card, headline-crop, duotone-mood, halftone, phone-frame, browser-window, code-editor.
- 20 gallery block style variations on
core/gallery: justified-rows, square-tile, polaroid-stack, filmstrip-snap, caption-prominent, duotone-mood-gallery, mosaic-spotlight, bordered-grid, masonry-cascade, headline-mosaic, lightbox-slideshow, before-after-pairs, filter-tags, lookbook-hotspots, card-deck-swipe, photo-essay-scroll, comparison-pairs, map-pinned-geo (SSR fallback), panorama-360 (SSR fallback), dynamic-query-gallery.
- New
image_gallery_styles feature flag, default off — opt-in for the first release. Flip via add_filter( 'pfbt_feature_image_gallery_styles', '__return_true' ).
- Conditional CSS loading: each variation's stylesheet loads only on pages where the variation is rendered (WP 6.1+
style_handle mechanism).
- Interactivity API view modules for the 7 interactive gallery variations are likewise registered conditionally — sites that don't use them ship zero JS from this PR.
- New
pfbt_image_style_variations and pfbt_gallery_style_variations filters let themes and other plugins extend the variation list.
patterns/image.php defaults to is-style-caption-card; patterns/gallery.php defaults to is-style-justified-rows.
- New author docs:
docs/BLOCK-STYLE-VARIATIONS.md (what each variation does, when to use) and docs/ADDING-A-VARIATION.md (how contributors add their own).
2.0.1
Added:
- New filter
pfbt_format_badge_icon lets themes replace the Format Badge's Dashicon span with their own icon markup (SVG, image, icon font).
- Expanded block supports on
format-badge, format-icon, post-format, and chatlog/conversation — anchor, className, align (where applicable), border, expanded typography.
Fixed:
- Chat Log block now honors its declared
align, className, color, spacing, typography, and border supports. Previously the render hardcoded its wrapper div without calling get_block_wrapper_attributes(), so editor-set wide / full alignment was ignored.
2.0.0
Major release — format styling system. Twelve-session overhaul that establishes a hard contract between the plugin and consumer themes: plugin owns layout, theme owns paint. Every plugin reference to color or typography routes through
var(--pfbt-format-X-*, NEUTRAL) tokens.
This is a breaking change. Sites that customized via the old
--wp--preset--color--format-* tokens must rename to the new
--pfbt-format-* namespace. Sites that did not customize see no visible change after upgrading (most look better, since stock Gutenberg colors that fought brand palettes are gone).
Highlights:
- 34 new design tokens covering all 9 non-standard formats + chat sub-elements, all in
@layer pfbt-format-tokens so theme styles win the cascade automatically (no !important arms-races).
- New Format Icon block (
post-formats/format-icon) — manually-placed standalone icon with currentColor inheritance.
- 9-symbol SVG sprite at
/img/format-icons.svg.
- Three new body + post classes:
pfbt-format-{slug}, pfbt-format-titleless, has-post-format.
- Twenty new display patterns under the
pfbt/ namespace (10 formats × 2 variants — archive + single).
- 18 opt-in block templates (9 single-post + 9 archive variants) with a Tools page toggle.
_pfbt_link_url post meta + Bookmark Card fallback for link-format external URLs.
- First-media helpers:
pfbt_get_first_gallery(), _video(), _audio().
- New contract enforcement test (
tests/unit/test-no-color-leakage.php) that fails CI on any forbidden color literal.
- Three new docs:
DESIGN-TOKENS.md, THEME-INTEGRATION.md, HOOKS-REFERENCE.md.
Migration:
See
THEME-INTEGRATION.md for the full table of old → new token names. Pattern slugs
pfpu/{format} are deprecated; use
pfbt/{format}-archive or
pfbt/{format}-single. Plugin's
theme.json no longer ships palette entries — themes own the palette.
1.2.5
Fixed
- Root-cause fix for homepage / page / archive resolution rendering with
single.html markup on heavily-themed sites. add_block_templates() (registered on the get_block_templates filter) was running array_unshift($single_template, $query_result) on every wp_template query, which placed single at the front of the result array even for queries asking about other slugs (front-page, page-home, page, singular, index). The block-template renderer's first-match resolution then picked single for the front page, leaking post-title, author byline, related-posts, and reading-progress markup onto pages that had their own templates resolved correctly.
- The single-template injection is now scoped to queries that actually want it: empty
slug__in (editor's full-template list), slug__in containing single, or post_type === 'post' (editor querying templates assignable to a post). For all other queries the result order is preserved.
- The
pfbt_register_format_templates opt-out filter from 1.2.4 is still honored as a complete bypass; this fix narrows the failure mode for themes that haven't opted out.
1.2.4
Added
- New filter
pfbt_register_format_templates (default true) lets themes opt out of the entire add_block_templates() body — the single injection, the "Default" pseudo-template, and the nine single-format-* registrations. Useful for themes that ship their own template hierarchy and don't want the plugin to interfere. Stop-gap for the underlying bug fixed properly in 1.2.5.
add_filter( 'pfbt_register_format_templates', '__return_false' );
1.2.3
Added
- New filter
pfbt_enqueue_format_styles (default true) lets themes opt out of enqueueing styles/format-styles.css. The plugin's stylesheet ships with stock WordPress fallback colors (#0073aa, #f0f0f1, #cccccc, etc.) that override branded child-theme palettes when both target the same .format-X body-class selectors.
add_filter( 'pfbt_enqueue_format_styles', '__return_false' );
- New filter
pfbt_merge_format_palette (default true) lets themes opt out of merging the plugin's theme.json palette additions (12 format-X-bg / format-X-border entries with stock Gutenberg defaults) into the resolved theme.json. Useful for themes whose palette is fully bespoke.
add_filter( 'pfbt_merge_format_palette', '__return_false' );
1.2.2
Fixed
- Bumped version header so Git Updater detects an update on installs that pulled the v1.2.1 release before commit
8daf545 ("fix: add missing activitypub and post-kinds include files") landed. Those installs were missing includes/activitypub/class-pfbt-activitypub-transformer.php and includes/post-kinds/class-pfbt-post-kinds-integration.php, causing a fatal in pfbt_include_files() during plugins_loaded. No code changes — release marker only.
1.2.1
Fixed
- Plugin no longer wholesale-replaces the host theme's
theme.json data when merging format colors. The merge is now additive: theme palette, gradients, styles, custom templates, and template parts are preserved alongside the plugin's contributions. Resolves an issue where activating this plugin would strip the active theme's brand palette from the Site Editor color picker.
- Bumped plugin
theme.json schema from version 2 to version 3 for forward compatibility with WordPress 6.6+.
1.2.0
New Features
- Added: WordPress Abilities API integration (requires WordPress 6.9+)
- Added: Six core abilities for machine-readable post format operations:
post_formats/list_formats - List all formats with metadata and post counts
post_formats/get_format_template - Get template and pattern info for a format
post_formats/validate_format - Validate content against format requirements
post_formats/set_post_format - Set format on a post
post_formats/get_post_format - Get current format of a post
post_formats/detect_format - Detect appropriate format from content
- Added: Five IndieWeb abilities for microformats2, POSSE, and webmentions:
post_formats/mf2_markup - Generate microformats2 markup for a post
post_formats/mf2_validate - Validate mf2 output for a post
post_formats/posse_prepare - Prepare content for POSSE syndication
post_formats/posse_targets - Get available syndication targets
post_formats/webmention_context - Get webmention context for a format
- Added: Four MCP abilities for AI-powered format suggestions:
post_formats/suggest_format - Analyze content and suggest appropriate format
post_formats/analyze_content - Detailed content analysis with signals and scores
post_formats/validate_format_content - Validate content for a specific format
post_formats/get_format_signals - Get signal weights for format detection
- Added: Feature flags system for optional integrations (IndieWeb, MCP, ActivityPub)
- Added: Microformats2 markup generation with format-specific classes (h-entry, p-note, h-cite, u-photo, etc.)
- Added: POSSE content preparation for Twitter/X, Mastodon, Bluesky, Threads, LinkedIn, Tumblr
- Added: Webmention context mapping for format-specific interaction types
- Added:
pfbt_abilities_registered action for extending abilities
Requirements
- Changed: Minimum WordPress version increased to 6.9 (for Abilities API support)
Developer
- Added:
PFBT_Feature_Flags class for managing optional feature toggles
- Added:
PFBT_Abilities_Manager class for Abilities API registration
- Added:
PFBT_Core_Abilities class with core format abilities
- Added:
PFBT_IndieWeb_Abilities class with IndieWeb abilities
- Added:
PFBT_MCP_Abilities class for AI-powered format suggestions
- Added:
PFBT_Format_Analyzer class for content signal detection
- Added:
PFBT_Format_Mf2 class for microformats2 generation
- Added:
PFBT_Posse_Transformer class for POSSE syndication preparation
- Added:
PFBT_Webmention_Context class for webmention handling
- Added: Unit tests for all abilities, IndieWeb, and MCP classes
1.1.4 - 2025-12-19
Bug Fixes
- Fixed: Critical issue where plugin's theme.json was overriding theme layout settings (contentSize, wideSize), causing blank templates
- Fixed: Plugin no longer overrides theme spacing settings (spacingSizes)
- Fixed: Removed appearanceTools setting that could conflict with theme settings
Changes
- Changed: Simplified theme.json to only include format-specific color palette additions
- Changed: Plugin now respects all theme layout and spacing settings
1.1.3 - 2025-12-18
Performance
- Fixed: Critical performance issue with revision queries on sites with many synced patterns
- Added: Transient-based caching for pattern registration to avoid unnecessary database operations
- Added: Pattern registration now skipped entirely on front-end for better performance
- Added: Pattern updates only occur when content has actually changed
- Added: Revision limiter for wp_block post type (limits to 3 revisions to prevent database bloat)
New Features
- Added: "Settings" link on Plugins page that links to Post Format Repair tool for easy access
Bug Fixes
- Fixed: Duplicate pattern insertion when selecting format from modal (patterns were being inserted twice)
- Fixed: Status format character counter appearing twice in editor
- Fixed: Aside format icon not displaying in Posts admin list (changed from
dashicons-aside to dashicons-format-aside)
- Fixed: JavaScript error "Cannot read properties of undefined (reading 'postCategories')" in block editor
- Fixed: Pattern transient now cleared on plugin deactivation to ensure fresh patterns on reactivation
Improvements
- Changed: Simplified all format patterns by removing unnecessary wrapper Group blocks
- Changed: Status pattern now uses single paragraph with
status-paragraph class
- Changed: Aside pattern now uses single paragraph (no wrapper)
- Changed: All other format patterns now use primary block + paragraph structure for cleaner editing
Security
- Added:
domReady wrapper for Post Format Block to prevent race conditions
- Added: Null check with fallback icon for safer script initialization
- Added: Asset file for Post Format Block script dependencies
1.1.2 - 2025-12-11
New Features
- Added: "Default" template option in template chooser that explicitly clears template assignment and uses default template hierarchy
- Added: Comprehensive logging system for tracking template assignment and REST API behavior for easier debugging
Improvements
- Improved: Simplified editor UI by removing duplicate "Post Format" dropdown from sidebar - now uses WordPress's built-in format selector in Status & visibility panel
- Improved: Status format character counter moved from sidebar panel to editor notice for cleaner UI
- Improved: Format selection modal now clearly shows "Standard (Single Template)" option with descriptive text
- Improved: "Single" template from theme now properly appears in template chooser for posts
- Improved: REST API now correctly returns 'default' template value when no template is assigned, fixing display issues
Bug Fixes
- Fixed: Standard format posts no longer incorrectly show format templates (like "Aside Format") when no template should be assigned
- Fixed: Template chooser modal now correctly displays all available templates including theme's default "Single" template
- Fixed: Editor now properly reflects actual database state for template assignments instead of showing cached/stale values
Technical Changes
- Changed: Removed
FormatSwitcherPanel component to eliminate duplicate UI controls
- Changed: Removed
PluginDocumentSettingPanel wrapper for cleaner sidebar
- Changed: "Default" template now added to all template queries for consistent availability
- Changed: Added
rest_prepare_post filter to ensure correct template values in editor
- Changed: Template assignment logic now properly handles "default" template selection
1.1.1 - 2025-12-09
Bug Fixes
- Fixed: Critical issue where format templates (Chat Format, Gallery Format, etc.) were appearing in the Template dropdown and hiding/replacing theme templates. Format templates now apply automatically via template hierarchy but don't show as selectable options in the editor.
1.1.0 - 2025-12-08
New Features
- Added: Post Format Block - Display block for showing post formats on the frontend (forked from Post Format Block by Aaron Jorbin)
- Added: Post format column in Posts admin list with clickable filtering (similar to categories/tags display)
- Added: Screen Options toggle for post format column visibility in admin
- Added: Post format taxonomy display in all 9 format templates (categories, tags, and format shown together)
- Added: Sortable post format column in admin list for easy organization
- Added: Dashicons for each post format in admin column for visual identification
Improvements
- Improved: Template assignment system now uses slug-only format (not full theme ID) for better compatibility
- Improved: All 9 format templates now display categories, tags, and post format in a horizontal flex group
- Improved: Consistent spacing added before taxonomy display across all templates
- Improved: Post format taxonomy now available in REST API for block editor integration
- Improved: Template dropdown now correctly displays format-specific template names
- Improved: Post format support now properly merges with theme's existing format support (no override)
Bug Fixes
- Fixed: Template assignment dropdown showing "Aside Format" for all post types
- Fixed: Post format support conflicting with theme-defined formats (now merges safely)
- Fixed: Duplicate post format registration from Chat Log block
- Fixed: Template storage format causing UI mismatch in editor sidebar
- Fixed: Plugin check errors for WordPress.org submission compliance
Code Quality
- Removed: All debug error_log() statements from production code
- Removed: Development files, test scripts, and backup files
- Improved: Variable naming to follow WordPress coding standards (all prefixed with pfbt_)
- Improved: Output escaping in admin columns for security compliance
- Improved: File naming (removed spaces from image filenames)
Developer
- Added: Comprehensive test suite with 15 validation categories
- Added: PHPCS, PHPStan, and PHPUnit configuration files
- Added: Security scanning (SAST) and vulnerability checking
- Added: PHP compatibility checks (7.4 - 8.4)
- Added: Accessibility testing infrastructure
- Added: Complete testing documentation (TESTING.md, TEST-REPORT.md)
1.0.0 - 2025-01-XX
Initial Release
- Added: Format selection modal on new post creation with visual cards for all 10 post formats
- Added: 10 format-specific block patterns optimized for each post type (Standard, Aside, Status, Link, Gallery, Image, Quote, Video, Audio, Chat)
- Added: Locked first blocks in patterns to maintain format consistency while allowing full content freedom
- Added: Automatic post format detection on save analyzing first block content structure
- Added: Format Switcher sidebar panel for mid-edit format changes with content preservation options
- Added: Status format 280-character validation with real-time counter and visual feedback
- Added: Post format repair tool (Tools → Post Format Repair) for scanning and fixing format mismatches
- Added: Integrated Chat Log block (chatlog/conversation) for conversation transcripts—no separate plugin needed
- Added: Chat Log platform support: Slack, Discord, Teams, Telegram, WhatsApp, Signal with automatic detection
- Added: Chat Log display styles: bubbles, IRC, transcript, timeline with full customization options
- Added: Bookmark Card plugin integration for Link format with graceful fallback to standard linked paragraphs
- Added: Theme-agnostic styling using CSS custom properties from theme.json for seamless integration
- Added: Complete keyboard navigation for all interactive elements (modals, switcher, patterns)
- Added: Screen reader support with ARIA labels, live regions, and semantic HTML structure
- Added: RTL language support for international WordPress sites
- Added: Complete internationalization with translation-ready strings and JavaScript translation support
- Added: Developer filters:
pfbt_registered_formats, pfbt_detected_format, pfbt_pattern_content
- Added: Developer actions:
pfbt_format_detected, pfbt_format_repaired, pfbt_format_changed
- Added: Comprehensive format detection rules for gallery, image, video, audio, quote, link, chat blocks
- Added: Block theme requirement validation on activation with helpful error messages
- Security: All user input escaped and sanitized following WordPress security standards
- Performance: JavaScript only loads in block editor, not on frontend for optimal site speed
- Performance: CSS uses native custom properties, no JavaScript-generated styles for better performance
- Performance: Auto-detection runs only on post save, not on every page load to prevent overhead
- Privacy: No data collection, external API calls, cookies, or user tracking