{"id":367588,"date":"2026-09-18T22:53:18","date_gmt":"2026-09-18T22:53:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/bits-markdown\/"},"modified":"2026-09-20T04:09:34","modified_gmt":"2026-09-20T04:09:34","slug":"bristlecone-markdown","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/bristlecone-markdown\/","author":23561851,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.1","stable_tag":"1.1.1","tested":"7.1.1","requires":"6.4","requires_php":"8.4","requires_plugins":null,"header_name":"Bristlecone Markdown","header_author":"Bristlecone IT Services","header_description":"Markdown for WordPress without Jetpack. Write in the block editor, Classic Editor, comments, or from iA Writer, with syntax aligned to iA Writer.","assets_banners_color":"1a3d36","last_updated":"2026-09-20 04:09:34","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/bristleconeit.com\/bristlecone-markdown","header_author_uri":"https:\/\/bristleconeit.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":108,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"bristleconeit","date":"2026-09-18 23:16:06","revision":3702856},"1.1.0":{"tag":"1.1.0","author":"bristleconeit","date":"2026-09-19 18:00:33","revision":3703529},"1.1.1":{"tag":"1.1.1","author":"bristleconeit","date":"2026-09-20 04:09:34","revision":3703842}},"upgrade_notice":{"1.1.1":"<p>Fixes adoption of existing Jetpack Markdown documents that use <code>_wpcom_is_markdown<\/code>.<\/p>","1.1.0":"<p>Optional Markdown-first block editor (off by default). Enable it under Settings \u2192 Bristlecone Markdown.<\/p>","1.0.2":"<p>Optional Simple Markdown and custom-block compatibility. Tools can scan other Markdown-named blocks; conversion still requires the existing settings unlock and a confirmation step.<\/p>","1.0.1":"<p>Existing Jetpack Markdown blocks are editable without Jetpack. Saving converts them to Bristlecone Markdown. Bulk rewrite is opt-in under Settings and Tools.<\/p>","1.0.0":"<p>Initial public release of Bristlecone Markdown.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3702843,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3702843,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3702843,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3702843,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"bristlecone\/markdown":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"bristlecone\/markdown","title":"Markdown","category":"text","icon":"editor-code","description":"Write formatted content in Markdown. Syntax is aligned with iA Writer.","keywords":["markdown","md","writing","ia writer"],"textdomain":"bristlecone-markdown","editorScript":"bristlecone-markdown-block","attributes":{"markdown":{"type":"string","default":""},"html":{"type":"string","default":""}},"supports":{"html":false,"align":["wide","full"],"anchor":true,"className":true},"editorStyle":"file:..\/..\/assets\/css\/editor.css","style":"file:..\/..\/assets\/css\/frontend.css"}},"tagged_versions":["1.0.0","1.1.0","1.1.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3702854,"resolution":"1","location":"assets","locale":"","width":1198,"height":486},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3702854,"resolution":"2","location":"assets","locale":"","width":1180,"height":800},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3702854,"resolution":"3","location":"assets","locale":"","width":1000,"height":635}},"screenshots":{"1":"Settings screen for Bristlecone Markdown.","2":"Markdown block in the editor with source and preview.","3":"A published Markdown post on the front end."}},"plugin_section":[],"plugin_tags":[107,1332,148076,4608,1811],"plugin_category":[44,46],"plugin_contributors":[281534],"plugin_business_model":[],"class_list":["post-367588","plugin","type-plugin","status-publish","hentry","plugin_tags-comments","plugin_tags-editor","plugin_tags-gutenberg","plugin_tags-markdown","plugin_tags-writing","plugin_category-discussion-and-community","plugin_category-editor-and-writing","plugin_contributors-bristleconeit","plugin_committers-bristleconeit"],"banners":{"banner":"https:\/\/ps.w.org\/bristlecone-markdown\/assets\/banner-772x250.png?rev=3702843","banner_2x":"https:\/\/ps.w.org\/bristlecone-markdown\/assets\/banner-1544x500.png?rev=3702843","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/bristlecone-markdown\/assets\/icon-128x128.png?rev=3702843","icon_2x":"https:\/\/ps.w.org\/bristlecone-markdown\/assets\/icon-256x256.png?rev=3702843","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/bristlecone-markdown\/assets\/screenshot-1.png?rev=3702854","caption":"Settings screen for Bristlecone Markdown."},{"src":"https:\/\/ps.w.org\/bristlecone-markdown\/assets\/screenshot-2.png?rev=3702854","caption":"Markdown block in the editor with source and preview."},{"src":"https:\/\/ps.w.org\/bristlecone-markdown\/assets\/screenshot-3.png?rev=3702854","caption":"A published Markdown post on the front end."}],"raw_content":"<!--section=description-->\n<p>Bristlecone Markdown lets you write WordPress content in Markdown and keep the source for later edits. It is a self-contained replacement for Jetpack\u2019s Markdown features, and its syntax is aligned with <a href=\"https:\/\/ia.net\/writer\">iA Writer<\/a> (Markdown support only, not the rest of the iA Writer app).<\/p>\n\n<p>The plugin is developed by <a href=\"https:\/\/bristleconeit.com\">Bristlecone IT Services<\/a>. Plugin homepage: <a href=\"https:\/\/bristleconeit.com\/bristlecone-markdown\">bristleconeit.com\/bristlecone-markdown<\/a>. Source and issues are on <a href=\"https:\/\/github.com\/Zyniker13\/bits-markdown\">GitHub<\/a>.<\/p>\n\n<h4>Writing surfaces<\/h4>\n\n<ul>\n<li><strong>Markdown block<\/strong> in the block editor, with source and preview tabs<\/li>\n<li><strong>Optional Markdown-first editor<\/strong> (off by default): new posts start with a Markdown block, and new blocks prefer Markdown instead of a paragraph<\/li>\n<li><strong>Whole-document Markdown<\/strong> for the Classic Editor, the REST API, and iA Writer\u2019s Publish command<\/li>\n<li><strong>Comment Markdown<\/strong>, enabled separately<\/li>\n<\/ul>\n\n<p>HTML is stored in <code>post_content<\/code> (and in the block\u2019s saved markup). The Markdown source is kept in <code>post_content_filtered<\/code> for document-mode posts, so the site still displays if you deactivate the plugin.<\/p>\n\n<h4>Syntax<\/h4>\n\n<p>CommonMark plus:<\/p>\n\n<ul>\n<li>Strikethrough <code>~~text~~<\/code><\/li>\n<li>Highlight <code>==text==<\/code><\/li>\n<li>Tables<\/li>\n<li>Footnotes <code>[^1]<\/code> and iA Writer inline footnotes <code>[^this is the note.]<\/code><\/li>\n<li>Heading permalinks and cross-references (<code>[Heading][]<\/code>, optional <code>{#id}<\/code> \/ <code>[Label]<\/code> on headings)<\/li>\n<li>Table of contents placeholder <code>{{TOC}}<\/code><\/li>\n<li>YAML front matter and <code>[%key]<\/code> interpolation<\/li>\n<li><code>$inline$<\/code> and <code>$$block$$<\/code> math (KaTeX, loaded only when needed)<\/li>\n<li>Superscript <code>^2<\/code> \/ <code>y^(a+b)^<\/code> and subscript <code>x~z<\/code><\/li>\n<li>Page break <code>+++<\/code><\/li>\n<li>Unpublished <code>\/\/<\/code> comments (stripped from output)<\/li>\n<li>MultiMarkdown-style citations <code>[p. 23][#CiteKey]<\/code><\/li>\n<li>Safe inline HTML<\/li>\n<\/ul>\n\n<p>Fenced code blocks can be highlighted on the server (no extra JavaScript). Theme developers can override <code>.hljs<\/code> or dequeue <code>bristlecone-markdown-highlight<\/code>.<\/p>\n\n<h4>Jetpack Markdown<\/h4>\n\n<p>If Jetpack Markdown is still active, Bristlecone Markdown <strong>does not<\/strong> convert posts or comments, so content is not processed twice. An admin notice offers a one-click control to disable the Jetpack Markdown module. Existing Jetpack Markdown posts (<code>_wpcom_is_markdown<\/code> or <code>_wpcom_markdown<\/code>, plus <code>post_content_filtered<\/code>) are adopted automatically afterward.<\/p>\n\n<p>When that module is off, existing <code>jetpack\/markdown<\/code> Gutenberg blocks stay editable (they are not treated as missing blocks). Saving a post rewrites them to <code>bristlecone\/markdown<\/code>. The inserter still offers only the Bristlecone Markdown block. An optional Tools converter can rewrite every matching post at once; it is off by default and requires Settings \u2192 Bristlecone Markdown \u2192 \u201cEnable Jetpack Markdown block converter under Tools\u201d, then Tools \u2192 Bristlecone Markdown Converter, then a confirmation checkbox.<\/p>\n\n<h4>Other Markdown blocks<\/h4>\n\n<p>This plugin does <strong>not<\/strong> replace every Markdown plugin. It can adopt a few Gutenberg block names so existing posts stay editable:<\/p>\n\n<ul>\n<li><code>simple-markdown\/markdown-block<\/code> (attribute <code>content<\/code>) when that plugin is not already registering the block<\/li>\n<li>Custom identifiers under Settings \u2192 Advanced: one <code>namespace\/block-name|attribute<\/code> per line (for example <code>acme\/markdown|content<\/code>). If <code>|attribute<\/code> is omitted, Bristlecone tries <code>source<\/code>, then <code>content<\/code>, then <code>markdown<\/code><\/li>\n<\/ul>\n\n<p>Aliases are hidden from the inserter and convert on save. The same Tools checkbox unlocks a scanner that lists unregistered block names containing \u201cmarkdown\u201d for review. Nothing is rewritten or added to the custom list until you select names and confirm. Names that look like editor comments (for example <code>markdown-comment<\/code>) are flagged and left unchecked.<\/p>\n\n<h4>iA Writer<\/h4>\n\n<p>In iA Writer you can publish drafts to WordPress 5.6+ over the REST API as Markdown. Bristlecone Markdown converts that body on save and returns Markdown source to non-Gutenberg clients on edit.<\/p>\n\n<p>YAML keys such as <code>title<\/code>, <code>excerpt<\/code>, <code>tags<\/code>, <code>categories<\/code>, and <code>slug<\/code> are mapped onto the WordPress post when present. If <code>title<\/code> is applied to an auto-draft and <code>slug<\/code> is omitted, the permalink is generated from the title. Other keys are stored and available for <code>[%key]<\/code> interpolation.<\/p>\n\n<h4>Intentionally not converted<\/h4>\n\n<ul>\n<li><strong>Task lists<\/strong> (<code>- [ ]<\/code>) \u2014 local writing aid; skip on publish<\/li>\n<li><strong>Content Blocks \/ file transclusion<\/strong> \u2014 these depend on iA Writer\u2019s local library. WordPress cannot see that library. Compile or export the transcluded document in iA Writer before publishing.<\/li>\n<\/ul>\n\n<h4>Footnotes<\/h4>\n\n<p>Footnote IDs are namespaced with the post ID (<code>bristlecone-markdown-fn-{id}-\u2026<\/code>) so archives and the core Footnotes block are less likely to clash. New posts are converted again after insert so those IDs are not left as a placeholder. Footnote markup can still be sensitive to theme CSS and to <code>wpautop<\/code> on classic (non-block) content; we disable <code>wpautop<\/code> for document-mode Markdown posts. If a theme styles <code>sup<\/code> unusually, footnotes may need a CSS tweak. Footnote lists still render on archive views for each post that contains them.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>bristlecone-markdown<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the zip from Plugins \u2192 Add New.<\/li>\n<li>Activate <strong>Bristlecone Markdown<\/strong>.<\/li>\n<li>Open Settings \u2192 Bristlecone Markdown to choose post types, comments, code highlighting, math, and whether new block-editor posts should start in Markdown.<\/li>\n<li>If Jetpack is installed, disable Jetpack Markdown when prompted.<\/li>\n<li>Optional: to rewrite every <code>jetpack\/markdown<\/code> block in the database, enable the Tools converter in settings, then confirm the run under Tools \u2192 Bristlecone Markdown Converter. The same page can convert Simple Markdown \/ custom identifiers and, after a scan and review, other unregistered blocks whose names contain \u201cmarkdown\u201d.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"will%20my%20posts%20break%20if%20i%20deactivate%20the%20plugin%3F\"><h3>Will my posts break if I deactivate the plugin?<\/h3><\/dt>\n<dd><p>Published HTML remains in <code>post_content<\/code>. Document-mode posts continue to display. You will not be able to edit them as Markdown until the plugin is active again.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20with%20the%20block%20editor%20and%20classic%20editor%20together%3F\"><h3>Can I use this with the block editor and Classic Editor together?<\/h3><\/dt>\n<dd><p>Yes. Mixed Gutenberg posts should use the Markdown block. Classic \/ REST \/ iA Writer posts are converted as a whole document.<\/p><\/dd>\n<dt id=\"can%20markdown%20be%20the%20default%20in%20the%20block%20editor%3F\"><h3>Can Markdown be the default in the block editor?<\/h3><\/dt>\n<dd><p>Yes, optionally. Enable \u201cDefault to Markdown for new posts and pages\u201d under Settings \u2192 Bristlecone Markdown. New posts of the enabled types that use the block editor then start with a Markdown block, and inserting a new block prefers Markdown instead of a paragraph. Existing content is not rewritten. The Classic Editor is unchanged. The setting is off by default.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20existing%20jetpack%20markdown%20blocks%3F\"><h3>What happens to existing Jetpack Markdown blocks?<\/h3><\/dt>\n<dd><p>When Jetpack Markdown is off, existing <code>jetpack\/markdown<\/code> blocks open in the editor (no missing-block warning) and are rewritten to Bristlecone Markdown when you save. The inserter still only offers the Bristlecone Markdown block. A bulk converter under Tools is optional and off by default: enable it in settings, then confirm the run on the Tools page.<\/p><\/dd>\n<dt id=\"what%20about%20simple%20markdown%20or%20other%20markdown%20blocks%3F\"><h3>What about Simple Markdown or other Markdown blocks?<\/h3><\/dt>\n<dd><p>simple-markdown\/markdown-block is treated like Jetpack when that plugin is not registering the block (<code>content<\/code> maps to Bristlecone <code>markdown<\/code>). You can list other block names under Settings \u2192 Advanced. The Tools scanner can find unregistered blocks whose names contain \u201cmarkdown\u201d; you choose which to convert. This is compatibility for leftover Gutenberg markup, not a replacement for those plugins.<\/p><\/dd>\n<dt id=\"does%20this%20phone%20home%3F\"><h3>Does this phone home?<\/h3><\/dt>\n<dd><p>No. KaTeX and the highlighter are bundled. There is no tracking and no remote conversion API.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Recognize Jetpack document Markdown posts that only have <code>_wpcom_is_markdown<\/code> set (the meta Jetpack actually writes). Those posts now open as Markdown source after Jetpack Markdown is turned off. <code>_wpcom_markdown<\/code> is still recognized.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Optional setting to default the block editor to Markdown: new posts and pages start with a Markdown block, and new blocks prefer Markdown instead of a paragraph. Off by default; existing content and the Classic Editor are unchanged.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Adopt <code>simple-markdown\/markdown-block<\/code> (attribute <code>content<\/code>) the same way as Jetpack when that plugin is inactive.<\/li>\n<li>Advanced settings: custom block identifiers (<code>namespace\/block-name|attribute<\/code>), with source\/content\/markdown fallback when the attribute is omitted.<\/li>\n<li>Gated Tools scanner lists unregistered blocks whose names contain \u201cmarkdown\u201d for review\u2192convert. Regex never auto-registers aliases. False friends such as <code>markdown-comment<\/code> are warned and left unchecked.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Adopt existing <code>jetpack\/markdown<\/code> Gutenberg blocks when Jetpack Markdown is inactive (hidden from the inserter; saved as <code>bristlecone\/markdown<\/code>).<\/li>\n<li>Optional Tools converter (off by default) to rewrite those blocks site-wide after a settings checkbox and a confirmation step.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial public release.<\/li>\n<li>Markdown block in the block editor, with source and preview tabs that use the same PHP parser as publish.<\/li>\n<li>Whole-document Markdown for the Classic Editor, the REST API, and iA Writer\u2019s Publish command.<\/li>\n<li>Optional Markdown in comments.<\/li>\n<li>iA Writer-aligned extras: highlight, footnotes, heading permalinks and cross-references, table of contents, YAML front matter, math (KaTeX), super\/subscript, page breaks, unpublished comments, and citations.<\/li>\n<li>Server-side highlighting for fenced code blocks (no extra JavaScript).<\/li>\n<li>Jetpack Markdown coexistence: skip conversion while that module is active, then adopt existing Markdown posts.<\/li>\n<\/ul>","raw_excerpt":"Write in Markdown without Jetpack. Block editor, Classic Editor, comments, and iA Writer publishing, with iA Writer-aligned syntax.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/367588","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=367588"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/bristleconeit"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=367588"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=367588"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=367588"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=367588"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=367588"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=367588"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}