{"id":265704,"date":"2026-02-04T22:12:29","date_gmt":"2026-02-04T22:12:29","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/djot-markup-for-wp\/"},"modified":"2026-03-31T04:57:41","modified_gmt":"2026-03-31T04:57:41","slug":"djot-markup","status":"publish","type":"plugin","link":"https:\/\/id.wordpress.org\/plugins\/djot-markup\/","author":23412006,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.5.11","stable_tag":"1.5.11","tested":"6.9.4","requires":"6.0","requires_php":"8.2","requires_plugins":null,"header_name":"Djot Markup","header_author":"Mark Scherer","header_description":"<a href=\"https:\/\/djot.net\/\" target=\"_blank\">Djot<\/a> markup language support for WordPress \u2013 a modern, cleaner alternative to Markdown with syntax highlighting. Convert Djot syntax to HTML in posts, pages, and comments.","assets_banners_color":"","last_updated":"2026-03-31 04:57:41","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/djot-markup\/","header_author_uri":"https:\/\/github.com\/php-collective","rating":0,"author_block_rating":0,"active_installs":0,"downloads":640,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.3.1":{"tag":"1.3.1","author":"markmarkmark","date":"2026-02-04 22:11:59"},"1.4.0":{"tag":"1.4.0","author":"markmarkmark","date":"2026-02-05 09:46:05"},"1.4.1":{"tag":"1.4.1","author":"markmarkmark","date":"2026-02-05 11:34:43"},"1.4.2":{"tag":"1.4.2","author":"markmarkmark","date":"2026-02-10 15:42:45"},"1.4.3":{"tag":"1.4.3","author":"markmarkmark","date":"2026-02-10 15:49:59"},"1.5.10":{"tag":"1.5.10","author":"markmarkmark","date":"2026-03-30 22:38:15"},"1.5.11":{"tag":"1.5.11","author":"markmarkmark","date":"2026-03-31 04:57:41"},"1.5.3":{"tag":"1.5.3","author":"markmarkmark","date":"2026-03-04 19:04:00"},"1.5.4":{"tag":"1.5.4","author":"markmarkmark","date":"2026-03-05 15:05:21"},"1.5.5":{"tag":"1.5.5","author":"markmarkmark","date":"2026-03-16 00:09:28"},"1.5.6":{"tag":"1.5.6","author":"markmarkmark","date":"2026-03-22 12:51:33"},"1.5.7":{"tag":"1.5.7","author":"markmarkmark","date":"2026-03-25 05:07:43"},"1.5.8":{"tag":"1.5.8","author":"markmarkmark","date":"2026-03-28 20:40:20"},"1.5.9":{"tag":"1.5.9","author":"markmarkmark","date":"2026-03-29 17:52:28"}},"upgrade_notice":{"1.5.7":"<p>Adds experimental visual editor (WYSIWYG) for Djot blocks. Enable in Settings \u2192 Djot Markup \u2192 Experimental.<\/p>","1.5.4":"<p>Fixes Torchlight line highlighting CSS selectors and removes opinionated styling to let themes handle visual presentation.<\/p>","1.5.0":"<p>Major update: Torchlight Engine replaces highlight.js for code highlighting. New inline code annotations (highlight, focus, diff).<\/p>","1.4.1":"<p>Fixes TOC and heading permalinks leaking into post excerpts.<\/p>","1.4.0":"<p>Adds Table of Contents, heading permalinks, and locale-aware smart quotes.<\/p>","1.3.1":"<p>Text domain, escaping, and Plugin Check fixes for WordPress.org plugin review compliance.<\/p>","1.2.1":"<p>Plugin renamed to &quot;Djot Markup&quot; for WordPress.org compliance.<\/p>","1.2.0":"<p>Code prefix changes for WordPress.org compliance. Fully backward compatible.<\/p>","1.1.0":"<p>Adds comment formatting toolbar with preview, and fixes archive page excerpts.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":{"wpdjot\/djot":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"wpdjot\/djot","version":"1.5.11","title":"Djot","category":"text","icon":"editor-code","description":"Write content using Djot markup language.","keywords":["djot","markup","markdown","text"],"supports":{"html":false,"align":["wide","full"],"className":true},"textdomain":"djot-markup","attributes":{"content":{"type":"string","default":""}},"editorScript":"file:.\/index.js","editorStyle":"file:.\/editor.css","render":"file:.\/render.php"}},"tagged_versions":["1.3.1","1.4.0","1.4.1","1.4.2","1.4.3","1.5.10","1.5.11","1.5.3","1.5.4","1.5.5","1.5.6","1.5.7","1.5.8","1.5.9"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Admin settings page","2":"Shortcode usage example","3":"Rendered output with syntax highlighting"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[1214,255233,4608,1119,4609],"plugin_category":[],"plugin_contributors":[255234],"plugin_business_model":[],"class_list":["post-265704","plugin","type-plugin","status-publish","hentry","plugin_tags-code","plugin_tags-djot","plugin_tags-markdown","plugin_tags-markup","plugin_tags-syntax-highlighting","plugin_contributors-markmarkmark","plugin_committers-markmarkmark"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/djot-markup.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Djot Markup adds support for the <a href=\"https:\/\/djot.net\/\">Djot<\/a> markup language in WordPress. Djot is created by John MacFarlane (creator of CommonMark and Pandoc) and offers cleaner syntax with more consistent parsing rules than Markdown.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li><strong>Full Djot Support<\/strong>: Headings, emphasis, links, images, code blocks, tables, footnotes, and more<\/li>\n<li><strong>Shortcode Support<\/strong>: Use <code>[djot]...[\/djot]<\/code> in your content<\/li>\n<li><strong>Content Filtering<\/strong>: Automatically process <code>{djot}...{\/djot}<\/code> blocks<\/li>\n<li><strong>Table of Contents<\/strong>: Automatic TOC generation from headings with configurable levels and position<\/li>\n<li><strong>Safe Mode<\/strong>: XSS protection for untrusted content<\/li>\n<li><strong>Syntax Highlighting<\/strong>: Server-side highlighting with Torchlight Engine<\/li>\n<li><strong>Admin Settings<\/strong>: Easy configuration through WordPress admin<\/li>\n<li><strong>Template Tags<\/strong>: Functions for theme developers<\/li>\n<li><strong>Dark Mode Support<\/strong>: CSS adapts to dark mode preferences<\/li>\n<\/ul>\n\n<h4>Usage<\/h4>\n\n<p><strong>Shortcode:<\/strong><\/p>\n\n<pre><code>[djot]\n# Hello World\n\nThis is _emphasized_ and this is *strong*.\n\n- List item 1\n- List item 2\n[\/djot]\n<\/code><\/pre>\n\n<p><strong>Template Tags:<\/strong><\/p>\n\n<pre><code>&lt;?php\n$html = wpdjot_to_html('# Hello *World*!');\nwpdjot_the('# _Hello_ *World*!');\n?&gt;\n<\/code><\/pre>\n\n<h4>Links<\/h4>\n\n<ul>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/djot-markup\/\">WordPress.org Plugin Page<\/a><\/li>\n<li><a href=\"https:\/\/djot.net\/\">Djot Syntax Reference<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/php-collective\/wp-djot\">GitHub Repository<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/php-collective\/wp-djot\/issues\">Report Issues<\/a><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to <code>\/wp-content\/plugins\/wp-djot<\/code><\/li>\n<li>Run <code>composer install<\/code> in the plugin directory<\/li>\n<li>Activate the plugin through the 'Plugins' screen in WordPress<\/li>\n<li>Configure settings under Settings \u2192 Djot Markup<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20is%20djot%3F\"><h3>What is Djot?<\/h3><\/dt>\n<dd><p>Djot is a light markup syntax created by John MacFarlane, the creator of CommonMark and Pandoc. It's designed to be a cleaner, more consistent alternative to Markdown.<\/p><\/dd>\n<dt id=\"why%20use%20djot%20instead%20of%20markdown%3F\"><h3>Why use Djot instead of Markdown?<\/h3><\/dt>\n<dd><p>Djot has cleaner syntax rules, proper footnote support, attributes for styling, and avoids many of Markdown's parsing ambiguities.<\/p><\/dd>\n<dt id=\"is%20it%20safe%20for%20user%20comments%3F\"><h3>Is it safe for user comments?<\/h3><\/dt>\n<dd><p>Yes! Enable \"Safe Mode\" in settings to sanitize untrusted content and prevent XSS attacks. Comments always use safe mode by default.<\/p><\/dd>\n<dt id=\"can%20i%20use%20my%20own%20css%3F\"><h3>Can I use my own CSS?<\/h3><\/dt>\n<dd><p>Yes, you can override the default styles by targeting the <code>.djot-content<\/code> class in your theme's CSS.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20gutenberg%3F\"><h3>Does it work with Gutenberg?<\/h3><\/dt>\n<dd><p>Yes, you can use the shortcode block to add Djot content in the block editor.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.5.7<\/h4>\n\n<ul>\n<li>Added experimental visual editor (WYSIWYG) for Djot blocks powered by Tiptap<\/li>\n<li>Added Experimental settings section with visual editor mode options<\/li>\n<li>Fixed visual editor round-trip preservation for all Djot elements<\/li>\n<li>Fixed different list types (bullet\/ordered\/task) colliding without blank lines<\/li>\n<\/ul>\n\n<h4>1.5.6<\/h4>\n\n<ul>\n<li>Fixed task list checkboxes stripped by wp_kses_post<\/li>\n<li>Fixed dark mode TOC text color<\/li>\n<\/ul>\n\n<h4>1.5.5<\/h4>\n\n<ul>\n<li>Added Djot syntax highlighting for code blocks via djot-grammars<\/li>\n<li>Fixed code block filename markers leaking into output<\/li>\n<li>Updated php-collective\/djot to 0.1.17<\/li>\n<\/ul>\n\n<h4>1.5.4<\/h4>\n\n<ul>\n<li>Fixed Torchlight line highlighting CSS selectors for annotated lines<\/li>\n<li>Removed opinionated visual styling (blockquotes, links, tables, etc.) - let themes handle it<\/li>\n<\/ul>\n\n<h4>1.5.3<\/h4>\n\n<ul>\n<li>Fixed PHP 8.2 trait constants compatibility (Rector downgrade)<\/li>\n<\/ul>\n\n<h4>1.5.2<\/h4>\n\n<ul>\n<li>Fixed PHP 8.0 downgrade for WordPress.org compatibility<\/li>\n<\/ul>\n\n<h4>1.5.1<\/h4>\n\n<ul>\n<li>Fixed deployment: remove missing dev dependencies from distribution<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>Added Torchlight Engine integration for advanced code block features<\/li>\n<li>Added inline code annotations: highlight, focus, diff (+\/-), and ranges<\/li>\n<li>Added Code Annotations panel in block editor sidebar<\/li>\n<li>Replaced highlight.js with server-side Torchlight\/Phiki<\/li>\n<\/ul>\n\n<h4>1.4.3<\/h4>\n\n<ul>\n<li>Fixed vertical spacing in highlighted code blocks<\/li>\n<\/ul>\n\n<h4>1.4.2<\/h4>\n\n<ul>\n<li>Added code block line numbers and line highlighting syntax<\/li>\n<li>Fixed legacy wp-djot\/djot blocks editability in Gutenberg<\/li>\n<\/ul>\n\n<h4>1.4.1<\/h4>\n\n<ul>\n<li>Fixed Table of Contents and heading permalinks appearing in post excerpts on archive pages<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Added automatic Table of Contents generation from headings<\/li>\n<li>Configurable TOC position (top\/bottom), heading levels, and list type<\/li>\n<li>Light and dark mode styling for TOC<\/li>\n<li>Added heading permalinks with show-on-hover and copy-to-clipboard<\/li>\n<li>Added locale-aware smart quotes (20 locales + Auto from site language)<\/li>\n<li>Bumped php-collective\/djot to ^0.1.13<\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Fixed text domain to match plugin slug (djot-markup)<\/li>\n<li>Properly escape HTML output with wp_kses_post\/wp_kses<\/li>\n<li>Fixed block wrapper attributes escaping for Plugin Check compliance<\/li>\n<li>Excluded non-permitted files from distribution<\/li>\n<li>Added build script for distribution zip<\/li>\n<li>Added markmarkmark to Contributors list<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Renamed plugin to \"Djot Markup\" for WordPress.org compliance<\/li>\n<li>Added ABSPATH checks to all PHP files for security<\/li>\n<li>Prefixed global variables for WordPress coding standards compliance<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Changed code prefix from wp_djot\/wp-djot to wpdjot for WordPress.org compliance<\/li>\n<li>Updated highlight.js from v11.9.0 to v11.11.1<\/li>\n<li>Added backward compatibility for existing blocks and settings<\/li>\n<li>Added settings migration from old option name<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Comment formatting toolbar with buttons for Bold, Italic, Code, Link, Quote, and Code Block<\/li>\n<li>Write\/Preview tabs for comment toolbar with live Djot preview<\/li>\n<li>Syntax highlighting in comment preview<\/li>\n<li>Excerpt filter to render Djot content on archive pages<\/li>\n<li>Support for extracting Djot content from Gutenberg blocks for excerpts<\/li>\n<li>Fixed archive pages to properly show excerpts with \"Read more\" links<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Full Djot syntax support<\/li>\n<li>Shortcode and content filtering<\/li>\n<li>Admin settings page<\/li>\n<li>Syntax highlighting with highlight.js<\/li>\n<li>Safe mode for untrusted content<\/li>\n<li>Template tags for theme developers<\/li>\n<\/ul>","raw_excerpt":"Djot markup language support for WordPress. A modern, cleaner alternative to Markdown.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/265704","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=265704"}],"author":[{"embeddable":true,"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/markmarkmark"}],"wp:attachment":[{"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=265704"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=265704"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=265704"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=265704"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=265704"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=265704"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}