{"id":324483,"date":"2026-06-15T00:28:47","date_gmt":"2026-06-15T00:28:47","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/coywolf-code-block-enhancer\/"},"modified":"2026-06-15T00:28:23","modified_gmt":"2026-06-15T00:28:23","slug":"coywolf-code-block-enhancer","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/coywolf-code-block-enhancer\/","author":115787,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.57","stable_tag":"1.0.57","tested":"7.0","requires":"6.3","requires_php":"7.4","requires_plugins":null,"header_name":"Coywolf Code Block Enhancer","header_author":"Coywolf","header_description":"Adds a Tools \u2192 Code Blocks option to apply Prism.js syntax highlighting and a copy code to clipboard button to the native WordPress Code block. Assets load only on posts that contain a code block.","assets_banners_color":"","last_updated":"2026-06-15 00:28:23","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/coywolf.com\/notes\/code-block-enhancer-syntax-highlighter-and-code-copier-plugin-for-native-wordpress-code-blocks\/","header_author_uri":"https:\/\/coywolf.com\/jon-henshaw\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":26,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.57":{"tag":"1.0.57","author":"jonhenshaw","date":"2026-06-15 00:28:23"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3572321,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3572321,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.57"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3572321,"resolution":"1","location":"assets","locale":"","width":1800,"height":945},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3572321,"resolution":"2","location":"assets","locale":"","width":1800,"height":945}},"screenshots":{"1":"The Code Block Enhancer settings screen, showing the Appearance section with the code block theme dropdown set to 'Default \u2014 Auto (follow OS dark mode)' and a live preview of a syntax-highlighted PHP code block with a copy-to-clipboard button.","2":"A syntax-highlighted JSON-LD code block rendered on the front end of a Coywolf Guides article, showing a Schema.org Article example with @context, @type, headline, description, and a nested author Person object."}},"plugin_section":[],"plugin_tags":[1214,257325,148076,7527,4609],"plugin_category":[],"plugin_contributors":[265832],"plugin_business_model":[],"class_list":["post-324483","plugin","type-plugin","status-publish","hentry","plugin_tags-code","plugin_tags-copy-code","plugin_tags-gutenberg","plugin_tags-prism","plugin_tags-syntax-highlighting","plugin_contributors-jonhenshaw","plugin_committers-jonhenshaw"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/coywolf-code-block-enhancer\/assets\/icon-128x128.png?rev=3572321","icon_2x":"https:\/\/ps.w.org\/coywolf-code-block-enhancer\/assets\/icon-256x256.png?rev=3572321","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/coywolf-code-block-enhancer\/assets\/screenshot-1.png?rev=3572321","caption":"The Code Block Enhancer settings screen, showing the Appearance section with the code block theme dropdown set to 'Default \u2014 Auto (follow OS dark mode)' and a live preview of a syntax-highlighted PHP code block with a copy-to-clipboard button."},{"src":"https:\/\/ps.w.org\/coywolf-code-block-enhancer\/assets\/screenshot-2.png?rev=3572321","caption":"A syntax-highlighted JSON-LD code block rendered on the front end of a Coywolf Guides article, showing a Schema.org Article example with @context, @type, headline, description, and a nested author Person object."}],"raw_content":"<!--section=description-->\n<p>Coywolf Code Block Enhancer extends the built-in <code>core\/code<\/code> block. In the editor\nit adds a \"Code language\" dropdown to the block sidebar; on the front end\nit highlights the code with Prism.js using a custom token palette, prints\nthe language name as a small label on the block, and pins a\ncopy-to-clipboard button to the top-right corner.<\/p>\n\n<ul>\n<li>Adds a \"Code language\" dropdown to the core Code block's sidebar. A\nbaseline of 9 languages (Bash, CSS, HTML\/Markup, JavaScript, JSON,\nPHP, Python, SQL, YAML) is always loaded; an additional 40 grammars\ncan be toggled on via <strong>Language packs<\/strong> in Tools \u2192 Code Blocks\n(Web\/App dev \u2014 TypeScript, JSX\/TSX, SCSS, Sass, Less, GraphQL \u2014 is\nenabled by default).<\/li>\n<li>Highlights code on the front end with Prism.js. Pick from 45 bundled\nthemes \u2014 the 8 stock Prism themes (Prism Default, Coy, Dark, Funky,\nOkaidia, Solarized Light, Tomorrow Night, Twilight) plus 37 community\nthemes from PrismJS\/prism-themes (a11y Dark, Atom Dark, Dracula,\nNord, One Dark, Night Owl, Synthwave '84, Gruvbox, Material, VS Code\nDark+, and more) \u2014 or the bundled <strong>Default<\/strong> palette (selected on\nfirst install).<\/li>\n<li>Adds a small language label in the top-left of each highlighted block\n(only when a language is set).<\/li>\n<li>Adds an accessible copy-to-clipboard button \u2014 <code>aria-label<\/code>, a polite\nstatus region that announces \"Copied to clipboard,\" and a visible \"\u2713\"\nstate for two seconds after a successful copy. Falls back to\n  document.execCommand('copy') on non-HTTPS or older browsers.<\/li>\n<li>Assets load only on singular posts\/pages that contain a code block;\nPrism core and grammars are loaded with the <code>defer<\/code> strategy so they\nnever block rendering.<\/li>\n<li>Dark-mode aware out of the box \u2014 with the bundled <strong>Default \u2014 Auto<\/strong>\ntheme (selected on first install), code blocks follow each visitor's\n  prefers-color-scheme automatically. Override from\n<strong>Tools \u2192 Code Blocks<\/strong> by switching to <strong>Default \u2014 Always light<\/strong> \/\n<strong>Always dark<\/strong>, or by picking any of the static Prism themes.<\/li>\n<\/ul>\n\n<h4>How it works<\/h4>\n\n<p>The chosen language is stored as a <code>language<\/code> block attribute on\n    core\/code, which lives in the block delimiter comment rather than the\nsaved markup. That means blocks without a language stay valid and\nexisting content is never migrated.<\/p>\n\n<p>On render, the plugin uses <code>WP_HTML_Tag_Processor<\/code> to add <code>data-language<\/code>\nto the <code>&lt;pre&gt;<\/code> and <code>language-xxx<\/code> to the <code>&lt;code&gt;<\/code> server-side \u2014 so KSES\nwon't strip <code>data-*<\/code> attributes for non-admin authors, and there is no\nblock-validation churn.<\/p>\n\n<p>Prism core and the per-language grammars are bundled under\n    assets\/prism\/ at v1.30.0 (MIT \u2014 see <code>assets\/prism\/LICENSE.txt<\/code>). They\nregister as deferred scripts with explicit dependency ordering (e.g.\n    markup-templating before <code>php<\/code>, <code>clike<\/code> before languages that extend\nit). The copy-button script depends on the last grammar in the chain,\nso all of Prism is present before the copy UI is wired up. Reading\n    code.textContent returns the original source even after Prism wraps\ntokens in spans, so the copied text is unaffected by highlighting.<\/p>\n\n<p>Self-hosting Prism (rather than loading from a public CDN) keeps the\nthird-party-script supply chain off the plugin's surface and means the\nplugin works on sites with strict CSPs or no external egress.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>Privacy-first: this plugin includes no analytics, no tracking, and no data gathering. Nothing about you, your site, or your visitors is ever collected or sent anywhere.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>code-block-enhancer<\/code> folder to <code>\/wp-content\/plugins\/<\/code>,\nor upload the .zip via Plugins \u2192 Add New \u2192 Upload Plugin.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Edit a post or page, add (or open) a Code block, and pick a language\nfrom the \"Code language\" panel in the block sidebar. The code is\nhighlighted on the front end and a copy button appears in the\ntop-right of the block.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"which%20languages%20are%20supported%20out%20of%20the%20box%3F\"><h3>Which languages are supported out of the box?<\/h3><\/dt>\n<dd><p>Bash\/Shell, CSS, HTML\/Markup, JavaScript, JSON, PHP, Python, SQL, and\nYAML. The dropdown also includes \"None (plain text)\" to render a block\nwithout highlighting.<\/p><\/dd>\n<dt id=\"how%20do%20i%20add%20another%20language%3F\"><h3>How do I add another language?<\/h3><\/dt>\n<dd><p>Open <strong>Tools \u2192 Code Blocks \u2192 Language packs<\/strong> and enable the pack that\ncontains the language you need. The baseline 9 languages are always\navailable; the other 40 grammars are grouped into packs you can toggle on.\nAnything you enable shows up in the Code block's \"Code language\" dropdown\nautomatically \u2014 no code editing required.<\/p><\/dd>\n<dt id=\"will%20this%20break%20my%20existing%20code%20blocks%3F\"><h3>Will this break my existing code blocks?<\/h3><\/dt>\n<dd><p>No. The language is stored as a block attribute, not baked into the\nsaved markup, so blocks without a language stay valid and the front-end\nlanguage class is applied at render time. Existing content is not\nmigrated and is unaffected.<\/p><\/dd>\n<dt id=\"does%20prism%20load%20on%20every%20page%3F\"><h3>Does Prism load on every page?<\/h3><\/dt>\n<dd><p>No. The token CSS only enqueues on singular posts\/pages where\n    has_block( 'core\/code' ) is true, and the Prism scripts are only\nenqueued from inside the <code>render_block<\/code> filter for <code>core\/code<\/code> \u2014 so a\npage with no code block ships none of these assets. Prism is also loaded\nwith the <code>defer<\/code> strategy so it never blocks rendering.<\/p><\/dd>\n<dt id=\"my%20site%20has%20a%20content%20security%20policy.%20what%20do%20i%20need%20to%20allow%3F\"><h3>My site has a Content Security Policy. What do I need to allow?<\/h3><\/dt>\n<dd><p>Nothing extra. Prism and the copy-button script are bundled with the\nplugin and served from your own origin, so a <code>script-src 'self'<\/code> policy\nis enough. There is no external CDN call from the front end.<\/p><\/dd>\n<dt id=\"how%20do%20i%20change%20the%20theme%3F\"><h3>How do I change the theme?<\/h3><\/dt>\n<dd><p>Go to <strong>Tools \u2192 Code Blocks<\/strong> in WP Admin. The \"Code block theme\"\ndropdown lists every bundled theme in three groups: Coywolf (Default \u2014\nAuto \/ Always light \/ Always dark), Prism (built-in), and Prism Themes\n(community). Below the dropdown a live preview pane re-renders a sample\nPHP snippet in the highlighted theme on every change \u2014 your site keeps\nthe previously saved theme until you click <strong>Save Changes<\/strong>. The\nselected theme's stylesheet is enqueued only on posts that contain a\ncode block; only one theme file is ever loaded per request.<\/p><\/dd>\n<dt id=\"how%20do%20i%20lock%20code%20blocks%20to%20light%20or%20dark%20mode%20for%20everyone%3F\"><h3>How do I lock code blocks to light or dark mode for everyone?<\/h3><\/dt>\n<dd><p>If you're on the bundled <strong>Default \u2014 Auto<\/strong> theme (the first-install\ndefault), switch to <strong>Default \u2014 Always light<\/strong> or\n<strong>Default \u2014 Always dark<\/strong> in <strong>Tools \u2192 Code Blocks<\/strong>. Picking any of the Prism themes also locks the\nappearance \u2014 those themes are static and don't react to OS dark mode.\nThe lock is implemented in CSS \u2014 there is no inline <code>&lt;style&gt;<\/code> injected\nper request \u2014 so it composes cleanly with caching plugins.<\/p><\/dd>\n<dt id=\"where%20do%20the%20prism%20themes%20come%20from%3F\"><h3>Where do the Prism themes come from?<\/h3><\/dt>\n<dd><p>The 8 stock themes are bundled from PrismJS\/prism at v1.30.0 (MIT \u2014 see\n    assets\/themes\/LICENSE-prism.txt). The 37 community themes are bundled\nfrom PrismJS\/prism-themes (MIT \u2014 see\n    assets\/themes\/LICENSE-prism-themes.txt). They are served from your own\norigin alongside the rest of the plugin's assets \u2014 no external request\nat runtime.<\/p><\/dd>\n<dt id=\"why%20is%20the%20language%20label%20not%20appearing%20on%20a%20particular%20block%3F\"><h3>Why is the language label not appearing on a particular block?<\/h3><\/dt>\n<dd><p>The label only renders when a language is set (the CSS rule is\n    .wp-block-code[data-language]::before). If the block was created\nbefore the plugin was installed, open it in the editor and pick a\nlanguage from the sidebar so the <code>language<\/code> attribute is saved.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.57<\/h4>\n\n<ul>\n<li>Refresh settings screenshot and reword its caption (#58).<\/li>\n<\/ul>\n\n<h4>1.0.56<\/h4>\n\n<ul>\n<li>Remove custom-theme upload feature; rename license files to .txt (WP.org review) (#57).<\/li>\n<\/ul>\n\n<h4>1.0.55<\/h4>\n\n<ul>\n<li>Fix WP.org review feedback: enqueue inline JS, 4-char prefixes, DB-stored custom theme (#56).<\/li>\n<\/ul>\n\n<h4>1.0.54<\/h4>\n\n<ul>\n<li>Readme: state the privacy-first stance (no analytics, no data gathering) (#55).<\/li>\n<\/ul>\n\n<h4>1.0.53<\/h4>\n\n<ul>\n<li>Security: the custom CSS theme check now also blocks @import and remote \/ protocol-relative url(), so an uploaded theme cannot fetch from or beacon to a third-party origin.<\/li>\n<li>Editor: the \"Code language\" sidebar control is now translatable (i18n).<\/li>\n<li>Accessibility: honor prefers-reduced-motion, raise the dark-mode language-label contrast to WCAG AA, and announce custom-theme admin notices to screen readers (role=\"alert\").<\/li>\n<li>Performance: memoize the custom-theme lookup so it is not re-read on every front-end request.<\/li>\n<li>Docs\/build: strip the GitHub-updates FAQ from the WordPress.org build, and correct the upload-security and \"add a language\" docs.<\/li>\n<\/ul>\n\n<h4>1.0.52<\/h4>\n\n<ul>\n<li>Render plugin screenshots in the GitHub readme (#53).<\/li>\n<\/ul>\n\n<h4>1.0.51<\/h4>\n\n<ul>\n<li>Resolve remaining Plugin Check warnings (#52).<\/li>\n<\/ul>\n\n<h4>1.0.50<\/h4>\n\n<ul>\n<li>Fix WordPress.org review issue: match text domain to the .org slug (#51).<\/li>\n<\/ul>\n\n<h4>1.0.49<\/h4>\n\n<ul>\n<li>CI: upgrade actions to Node 24-native versions (#50).<\/li>\n<\/ul>\n\n<h4>1.0.48<\/h4>\n\n<ul>\n<li>CI: run bundled JS actions on Node 24 (#49).<\/li>\n<\/ul>\n\n<h4>1.0.47<\/h4>\n\n<ul>\n<li>Set distinct Plugin URI and Author URI (#48).<\/li>\n<\/ul>\n\n<h4>1.0.46<\/h4>\n\n<ul>\n<li>Add WordPress.org screenshots + captions (#47).<\/li>\n<\/ul>\n\n<h4>1.0.45<\/h4>\n\n<ul>\n<li>Fix readme Contributors\/Tags header line (#46).<\/li>\n<\/ul>\n\n<h4>1.0.44<\/h4>\n\n<ul>\n<li>Set readme Contributors to jonhenshaw (#45).<\/li>\n<\/ul>\n\n<h4>1.0.43<\/h4>\n\n<ul>\n<li>Fix all WordPress.org Plugin Check errors (#44).<\/li>\n<\/ul>\n\n<h4>1.0.42<\/h4>\n\n<ul>\n<li>Add WordPress.org variant build + gated SVN deploy (#43).<\/li>\n<\/ul>\n\n<h4>1.0.41<\/h4>\n\n<ul>\n<li>Add Atom-feed fallback when the GitHub API is rate-limited (#42).<\/li>\n<\/ul>\n\n<h4>1.0.40<\/h4>\n\n<ul>\n<li>Fix: don't block manual zip uploads (untrusted host error) (#41).<\/li>\n<\/ul>\n\n<h4>1.0.39<\/h4>\n\n<ul>\n<li>Harden guard_pre_download: use hook_extra, fail closed (#40).<\/li>\n<\/ul>\n\n<h4>1.0.38<\/h4>\n\n<ul>\n<li>Perf: honour _neg cache + cache wp_error failures in updater (#39).<\/li>\n<\/ul>\n\n<h4>1.0.37<\/h4>\n\n<ul>\n<li>Perf: memoize the language registry (audit finding) (#38).<\/li>\n<\/ul>\n\n<h4>1.0.36<\/h4>\n\n<ul>\n<li>Preload grammars at low priority (fetchpriority=\"low\") (#37).<\/li>\n<\/ul>\n\n<h4>1.0.35<\/h4>\n\n<ul>\n<li>Preload grammar scripts in  to break the critical request chain (#36).<\/li>\n<\/ul>\n\n<h4>1.0.34<\/h4>\n\n<ul>\n<li>Default light palette: higher-contrast colors (WCAG AA \/ AAA) (#35).<\/li>\n<\/ul>\n\n<h4>1.0.33<\/h4>\n\n<ul>\n<li>Bump Tested up to: 7.0 (#34).<\/li>\n<\/ul>\n\n<h4>1.0.32<\/h4>\n\n<ul>\n<li>Settings: unsaved-changes guard with 3-button modal (#33).<\/li>\n<\/ul>\n\n<h4>1.0.31<\/h4>\n\n<ul>\n<li>Settings: Custom theme into Appearance, Languages last (#32).<\/li>\n<\/ul>\n\n<h4>1.0.30<\/h4>\n\n<ul>\n<li>Languages: Web\/App dev is the new baseline pack (#31).<\/li>\n<\/ul>\n\n<h4>1.0.29<\/h4>\n\n<ul>\n<li>Settings preview JS: replace innerHTML with DOM APIs (defense in depth) (#30).<\/li>\n<\/ul>\n\n<h4>1.0.28<\/h4>\n\n<ul>\n<li>Per-language toggles + per-page lazy grammar enqueue (#29).<\/li>\n<\/ul>\n\n<h4>1.0.27<\/h4>\n\n<ul>\n<li>Add Language packs setting \u2014 5 togglable groups of 40 extra Prism grammars (#28).<\/li>\n<\/ul>\n\n<h4>1.0.26<\/h4>\n\n<ul>\n<li>Update plugin description copy (#27).<\/li>\n<\/ul>\n\n<h4>1.0.25<\/h4>\n\n<ul>\n<li>Test the v1.0.24 updater-flush refresh-current_version fix (#26).<\/li>\n<\/ul>\n\n<h4>1.0.24<\/h4>\n\n<ul>\n<li>Updater: refresh current_version after upgrade (fix the double-update prompt) (#25).<\/li>\n<\/ul>\n\n<h4>1.0.23<\/h4>\n\n<ul>\n<li>Test the v1.0.22 updater-flush fix (#24).<\/li>\n<\/ul>\n\n<h4>1.0.22<\/h4>\n\n<ul>\n<li>Updater: clear update_plugins transient after self-update (#23).<\/li>\n<\/ul>\n\n<h4>1.0.21<\/h4>\n\n<ul>\n<li>Fix: stray ?&gt; leaked PHP source into the settings preview (#22).<\/li>\n<\/ul>\n\n<h4>1.0.20<\/h4>\n\n<ul>\n<li>Custom upload: drop strict MIME sniff (rejected valid CSS files) (#21).<\/li>\n<\/ul>\n\n<h4>1.0.19<\/h4>\n\n<ul>\n<li>Preview: fix Default light stripes; add side padding (#20).<\/li>\n<\/ul>\n\n<h4>1.0.18<\/h4>\n\n<ul>\n<li>Settings: download link, custom theme name, Save at bottom, auto-activate (#19).<\/li>\n<\/ul>\n\n<h4>1.0.17<\/h4>\n\n<ul>\n<li>Default theme: continuous background; preview alignment (#18).<\/li>\n<\/ul>\n\n<h4>1.0.16<\/h4>\n\n<ul>\n<li>Rename Coywolf theme to default.css; add custom-theme upload (#17).<\/li>\n<\/ul>\n\n<h4>1.0.15<\/h4>\n\n<ul>\n<li>Default theme: set bg to #ffffff (light) and #050520 (dark) (#16).<\/li>\n<\/ul>\n\n<h4>1.0.14<\/h4>\n\n<ul>\n<li>Rename Prism 'Default' \u2192 'Prism Default'; rename Claude \u2192 Default (#15).<\/li>\n<\/ul>\n\n<h4>1.0.13<\/h4>\n\n<ul>\n<li>Live theme preview on the Tools \u2192 Code Blocks settings page (#14).<\/li>\n<\/ul>\n\n<h4>1.0.12<\/h4>\n\n<ul>\n<li>Rename bundled palette label from 'Coywolf Claude' to 'Claude' (#13).<\/li>\n<\/ul>\n\n<h4>1.0.11<\/h4>\n\n<ul>\n<li>Bundle all 45 Prism themes; theme picker on settings page (#12).<\/li>\n<\/ul>\n\n<h4>1.0.10<\/h4>\n\n<ul>\n<li>Auto dark mode + Tools settings page for theme override (#11).<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>No-op release to verify the plugin icon shows on the Updates row once the site is running an icon-aware updater (1.0.8+).<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Show plugin icon on Updates \/ Plugins \/ View-details (#9).<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Self-host Prism and allowlist the language attribute (security) (#8).<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Add coywolf logo to .wordpress-org\/ and readme.md (#7).<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Mirror readme.md as a peer to readme.txt; dual-bump in release workflow (#6).<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Rename plugin title to 'Coywolf Code Block Enhancer' (#5).<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Mirror readme.txt into README.md for GitHub rendering (#4).<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Rewrite readme.txt in coywolf-link-checker format (#3).<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Add GitHub updater, uninstall cleanup, expanded readme (#2).<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Syntax highlighting and a copy-to-clipboard button for the native WordPress Code block, plus a language picker in the editor sidebar.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/324483","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=324483"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jonhenshaw"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=324483"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=324483"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=324483"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=324483"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=324483"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=324483"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}