

Format selection modal with post format cards shown when creating a new post
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. It requires a block theme — on a classic theme the plugin deactivates itself with an explanatory notice.
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.
10 Format-Specific Block Patterns
Each WordPress post format gets a block pattern for its content type. Choosing a format inserts its pattern into the post, and you can edit every block in it:
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, avatars (Gravatar with an initials fallback), 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, Image, Video, Audio, Quote, Chat Log, and Bookmark Card blocks map to their formats; an Aside or Status paragraph maps when it carries the pattern’s class. A Pullquote doesn’t count as a Quote. Detection runs once, on a post’s first save, and never changes a format you set.
Format Selection Modal
When creating a new post, a visual format selection modal appears with all 10 formats displayed as cards showing an icon, name, and description. It’s built on the WordPress Modal component and announces your choice to screen readers.
Change Format Mid-Edit
Use the Format row in the post sidebar (WordPress core’s control). Picking a new format inserts that format’s pattern at the top of the post and keeps your existing blocks. If the post is empty, the pattern replaces the empty block.
Status Format Validation
The Status format shows a live “N characters remaining” counter with a 280-character soft limit, warning and over-limit styling, and screen reader announcements. It never blocks publishing.
Post Format Repair Tool
The repair tool (Tools Post Format Repair) scans your posts when you open it and lists posts whose format doesn’t match their first block. Use “Apply All Suggestions” or the per-row “Apply”. Dry run is on by default, and each change saves a revision first. Useful when migrating from classic themes.
Theme-Agnostic Styling
Format styles use --pfbt-* CSS custom properties that resolve through your theme.json, so they follow your theme’s colors, typography, and spacing and work with Global Styles.
Also Included
image_gallery_styles, quote_styles) are off by default.Creating Your First Formatted Post:
1. Navigate to Posts Add New
2. Format selection modal appears automatically
3. Click your desired format (e.g., “Quote”)
4. The format’s pattern is inserted
5. Add content within the pattern
6. Publish your formatted post
Mid-Edit Format Switching:
1. Open the Post tab in the right sidebar
2. Select the Format row
3. Choose a new format
4. The new pattern is inserted at the top; your existing blocks stay
Using Auto-Detection:
1. Start a new post without selecting a format
2. Add content (e.g., insert a gallery block)
3. Save as draft or publish
4. Plugin automatically detects Gallery format
5. Format is assigned without manual action
Showcase quotations and citations beautifully:
Turn conversation transcripts into readable, attractive content:
Threaded replies are grouped and can be collapsed. Reaction counts and reply indicators in pasted text are skipped.
Let the plugin handle format assignment:
Detection rules: the first block decides. Gallery block = Gallery format, Video = Video, Quote block = Quote (a Pullquote doesn’t count). Detection runs once per post.
Fix format assignments across your entire site:
Common scenarios: migrating from classic themes, imported content, incorrect manual assignments, exploring your format distribution. The repair tool saves a revision before each change and edits the post’s format, not its content. (The separate Template Assignments section on that screen also updates page templates.)
Preserve post format styling when switching to block themes:
Before Migration:
1. Install plugin on classic theme site
2. Leave classic theme active
3. Open the repair tool (dry run stays on, so nothing is applied)
4. Review the mismatches
During Migration:
1. Switch to block theme
2. Activate Post Formats for Block Themes
3. Visit Tools Post Format Repair
4. The page scans your posts on load
5. Review the mismatches
6. Uncheck Dry run, then click Apply All Suggestions
After Migration:
1. Check frontend display
2. Customize styling in theme.json
3. Create new posts with format patterns
4. 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.
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.
Full user documentation — installation, settings, common tasks, troubleshooting, privacy, and a Playground preview guide — lives at courtneyr-dev.github.io/post-formats-for-block-themes. Developers extending formats, detection, or styling should start with the hooks reference.
Post Formats for Block Themes is built for performance: JavaScript loads only in block editor (never on frontend), CSS uses minimal native custom properties, auto-detection runs only on save, no frontend database queries, properly enqueued versioned assets for browser caching, no external dependencies or CDN requests.
This plugin respects user privacy: does not collect or store user data, does not make external API calls, does not set cookies, does not track users, does not share data with third parties. Format selections and post meta stored only in your WordPress database using standard functions.
Tested and fully functional in: Chrome 90+, Firefox 88+, Safari 14+, iOS Safari 14+, Chrome for Android 90+. Uses modern JavaScript (ES6+) with polyfills for wider compatibility.
For support: check FAQ section, read format descriptions, visit WordPress.org support forums, search existing threads, create new topic with details (WordPress version, PHP version, theme name, active plugins, issue description, reproduction steps, screenshots).
For bug reports and feature requests: visit GitHub repository.
Contributions welcome! Report bugs on GitHub, submit pull requests, translate via WordPress.org, write tutorials, answer support questions, share with others. Development: follows WordPress Coding Standards, includes comprehensive test suite (PHPUnit + Playwright), CI/CD pipeline with automated testing, accessibility tested with axe-core.
Inspired by WordPress Twenty Thirteen theme’s post format treatments. Built with WordPress Gutenberg components. Icons by Dashicons. Developed by Courtney Robertson. License: GPL v2 or later.
This plugin does not connect to or rely on any external services. All functionality runs entirely on your WordPress installation using core WordPress APIs. The Chat Log block specifically: does NOT send conversation data to external services, does NOT make API calls, processes all transcript text locally using JavaScript, stores formatted conversations in post content only. Your conversations never leave your server.