{"id":351489,"date":"2026-08-13T22:34:43","date_gmt":"2026-08-13T22:34:43","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/decoblocks\/"},"modified":"2026-08-15T10:54:13","modified_gmt":"2026-08-15T10:54:13","slug":"decoblocks","status":"publish","type":"plugin","link":"https:\/\/zh-hk.wordpress.org\/plugins\/decoblocks\/","author":23546060,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.44.1","stable_tag":"2.44.1","tested":"7.0.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"DecoBlocks","header_author":"LUX Digest","header_description":"Post decoration toolkit for WordPress - speech bubbles, section boxes, custom bullet lists, highlights, auto table of contents (TOC) and more, usable in both the Block Editor and the Classic Editor.","assets_banners_color":"d0cdc9","last_updated":"2026-08-15 10:54:13","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/store.luxdigest.com\/decoblocks","header_author_uri":"https:\/\/store.luxdigest.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":104,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.36.8":{"tag":"2.36.8","author":"luxsnap","date":"2026-08-14 02:44:55"},"2.36.9":{"tag":"2.36.9","author":"luxsnap","date":"2026-08-14 04:17:48"},"2.38.0":{"tag":"2.38.0","author":"luxsnap","date":"2026-08-14 13:39:27"},"2.38.1":{"tag":"2.38.1","author":"luxsnap","date":"2026-08-14 13:53:51"},"2.43.0":{"tag":"2.43.0","author":"luxsnap","date":"2026-08-15 03:50:24"},"2.44.1":{"tag":"2.44.1","author":"luxsnap","date":"2026-08-15 10:54:13"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3648192,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3648192,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3648192,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"decoblocks\/bubble":{"name":"decoblocks\/bubble","title":"Speech Bubble (DecoBlocks)"},"decoblocks\/box":{"name":"decoblocks\/box","title":"Section Box (DecoBlocks)"},"decoblocks\/highlight":{"name":"decoblocks\/highlight","title":"Highlight (DecoBlocks)"},"decoblocks\/toc":{"name":"decoblocks\/toc","title":"Auto Table of Contents (DecoBlocks)"},"decoblocks\/sparkle":{"name":"decoblocks\/sparkle","title":"Sparkle Text (DecoBlocks)"},"decoblocks\/glow-box":{"name":"decoblocks\/glow-box","title":"Glow Box (DecoBlocks)"},"decoblocks\/firework-button":{"name":"decoblocks\/firework-button","title":"Firework Effect (DecoBlocks)"},"decoblocks\/bullet-basic":{"name":"decoblocks\/bullet-basic","title":"Bullet Basic"},"decoblocks\/sticker":{"name":"decoblocks\/sticker","title":"Insert Sticker (DecoBlocks)"}},"tagged_versions":["2.36.8","2.36.9","2.38.0","2.38.1","2.43.0","2.44.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3648192,"resolution":"1","location":"assets","locale":"","width":1280,"height":800},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3648192,"resolution":"2","location":"assets","locale":"","width":1280,"height":800},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3648192,"resolution":"3","location":"assets","locale":"","width":1280,"height":800},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3648192,"resolution":"4","location":"assets","locale":"","width":1280,"height":800}},"screenshots":{"1":"Speech bubble, section box, and quote block styles in the block inserter","2":"Full block category with all available decoration blocks","3":"Classic Editor toolbar dropdown with every block available as a shortcode","4":"A decorated post showing several blocks used together"}},"plugin_section":[],"plugin_tags":[12979,33535,30084,275589,150179],"plugin_category":[],"plugin_contributors":[275590],"plugin_business_model":[],"class_list":["post-351489","plugin","type-plugin","status-publish","hentry","plugin_tags-blog-design","plugin_tags-content-blocks","plugin_tags-post-decoration","plugin_tags-quote-box","plugin_tags-speech-bubble","plugin_contributors-luxsnap","plugin_committers-luxsnap"],"banners":{"banner":"https:\/\/ps.w.org\/decoblocks\/assets\/banner-772x250.png?rev=3648192","banner_2x":"https:\/\/ps.w.org\/decoblocks\/assets\/banner-1544x500.png?rev=3648192","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/decoblocks\/assets\/icon-256x256.png?rev=3648192","icon_2x":"https:\/\/ps.w.org\/decoblocks\/assets\/icon-256x256.png?rev=3648192","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/decoblocks\/assets\/screenshot-1.png?rev=3648192","caption":"Speech bubble, section box, and quote block styles in the block inserter"},{"src":"https:\/\/ps.w.org\/decoblocks\/assets\/screenshot-2.png?rev=3648192","caption":"Full block category with all available decoration blocks"},{"src":"https:\/\/ps.w.org\/decoblocks\/assets\/screenshot-3.png?rev=3648192","caption":"Classic Editor toolbar dropdown with every block available as a shortcode"},{"src":"https:\/\/ps.w.org\/decoblocks\/assets\/screenshot-4.png?rev=3648192","caption":"A decorated post showing several blocks used together"}],"raw_content":"<!--section=description-->\n<p>Most WordPress posts read like documents. DecoBlocks is built for the posts that should read like <strong>you<\/strong> \u2014 the ones where a reader stops scrolling, actually feels something, and sticks around.<\/p>\n\n<p>Plain, information-only writing is easy to skim, easy to summarize, and increasingly easy to replace. What's harder to replace is a post with a real voice behind it \u2014 the small human touches (a sticker at just the right moment, a highlighted aside, a speech bubble that sounds like you talking) that no template and no AI-generated draft quite gets right. That's the gap DecoBlocks fills: the same kind of expressive stickers you already use every day in chat apps, brought into your blog posts \u2014 a visual rhythm for pacing emotion across a page that WordPress has never quite had.<\/p>\n\n<p>The practical effect, when it's used well: readers stay on the page longer, they're more likely to comment or come back, and your writing simply feels more like <strong>someone's<\/strong>, not something's. DecoBlocks doesn't promise a ranking boost \u2014 no plugin honestly can \u2014 but posts that keep people reading and coming back are exactly the kind of signal search engines are built to reward.<\/p>\n\n<p>Character stickers are the centerpiece: install packs made by independent illustrators (Insert Sticker block, or the Get from Marketplace tab) and drop them into your posts to punctuate a feeling \u2014 surprise, warmth, a laugh \u2014 the same way a well-placed sticker does on a personal blog. Alongside them, DecoBlocks gives you a full set of ready-made design blocks \u2014 speech bubbles, styled quote boxes, section boxes, custom bullet icons, text highlights, an auto-generated table of contents, glow effects, and an animated firework decoration \u2014 all without writing a single line of CSS, as native blocks (Gutenberg) or shortcodes (Classic Editor).<\/p>\n\n<p>Whether you call it post decoration, blog design, writing decoration, or content styling, DecoBlocks is built to make your posts beautiful, readable, and \u2014 most of all \u2014 recognizably, humanly yours.<\/p>\n\n<h4>Free Features<\/h4>\n\n<ul>\n<li>Speech bubble (filled \/ outline, left\/right)<\/li>\n<li>Section box (solid \/ shadow \/ dashed)<\/li>\n<li>Custom bullet list icons (check \/ star \/ heart \/ arrow \/ point)<\/li>\n<li>Text highlight (yellow \/ green)<\/li>\n<li>Auto-generated table of contents<\/li>\n<li>Sparkle text effect<\/li>\n<li>Glow box (pulse effect)<\/li>\n<li>Auto-repeating firework decoration (gold \/ rainbow colors, adjustable particle count and timing)<\/li>\n<li>Quote block with multiple built-in styles (classic \/ vertical bar \/ line frame \/ big quotation marks)<\/li>\n<li>Divider block with multiple built-in styles (solid \/ dashed \/ dotted)<\/li>\n<li>Custom color palette and the option to hide the \"Powered by\" credit \u2014 both free, no upgrade needed<\/li>\n<li>Independent heading tag (H2\u2013H6, or plain text) and font size choice on every text block \u2014 your choice, whether or not you want it picked up by search engines<\/li>\n<li>Works in both the Block Editor and the Classic Editor<\/li>\n<\/ul>\n\n<h4>3D Style Upgrade (paid add-on)<\/h4>\n\n<ul>\n<li>Pastel speech bubble style and avatar images<\/li>\n<li>Sticky-note and corner-frame quote styles<\/li>\n<li>Diamond \/ arrow \/ diagonal-slash \/ tick-mark divider ornaments<\/li>\n<li>Multi-color confetti firework bursts<\/li>\n<li>Rainbow shine text, glowing twinkle-star box, and animated gradient highlight sweep<\/li>\n<li>Genuine 3D depth effects (shadows, embossing, elevation) layered on top of the styles above<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to a marketplace server operated by the plugin author (store.luxdigest.com) for the optional sticker-pack feature. No data is sent to this server as part of normal plugin use (decoration blocks, shortcodes, TOC, etc.) \u2014 only the specific actions below trigger a connection, and only when you actively use them:<\/p>\n\n<ul>\n<li><strong>Browsing\/installing sticker packs<\/strong> (\"Get from Marketplace\" tab in the Insert Sticker block): sends your site's language (ko\/en\/ja, informational only \u2014 the server returns every pack regardless) and, when installing a pack, your license key and site URL (home_url()), to fetch the pack list and download the pack's image files. Endpoints: <code>GET \/packs<\/code>, <code>GET \/packs\/{slug}<\/code> \u2014 used only when you open this tab or click Install.<\/li>\n<li><strong>Sticker pack license lookup<\/strong> (Settings \u2192 Sticker Pack Licenses): sends the license key you paste to identify which pack it belongs to, then reuses the pack install flow above. Endpoint: <code>GET \/license-lookup<\/code> \u2014 used only when you click \"Add\".<\/li>\n<li><strong>Purchase links<\/strong>: the \"Get 3D Styles\" and pack purchase buttons link out (in a new browser tab) to <code>\/buy-3d<\/code> and <code>\/buy\/{slug}<\/code> on the same marketplace server to complete a purchase. No data is sent automatically \u2014 this only opens when you click a purchase button yourself.<\/li>\n<\/ul>\n\n<p>The DecoBlocks 3D Style Upgrade is a separate, independent plugin, not distributed through WordPress.org \u2014 this free plugin never downloads, installs, or connects to anything on its behalf. It is sold directly on store.luxdigest.com; after purchase you receive an email with a link to download the plugin's zip file, which you install manually like any other plugin (Plugins \u2192 Add New \u2192 Upload Plugin). All license verification for that upgrade happens inside that separate plugin, not here.<\/p>\n\n<p>This service is operated by the same developer as this plugin. Terms of Service: https:\/\/store.luxdigest.com\/terms-of-service\/ \u2014 Privacy Policy: https:\/\/store.luxdigest.com\/privacy-policy\/ \u2014 Refund Policy: https:\/\/store.luxdigest.com\/refund-policy\/ \u2014 Contact: https:\/\/store.luxdigest.com\/contact\/<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to <code>\/wp-content\/plugins\/decoblocks<\/code>, or install the plugin through the WordPress plugins screen directly.<\/li>\n<li>Activate the plugin through the 'Plugins' screen in WordPress.<\/li>\n<li>Look for the \"DecoBlocks\" category in the block inserter, or use the toolbar buttons in the Classic Editor.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20work%20with%20the%20classic%20editor%3F\"><h3>Does this work with the Classic Editor?<\/h3><\/dt>\n<dd><p>Yes. Every block also has a matching shortcode with a toolbar button and Quicktags button for the Classic Editor.<\/p><\/dd>\n<dt id=\"will%20this%20slow%20down%20my%20site%3F\"><h3>Will this slow down my site?<\/h3><\/dt>\n<dd><p>No. Styles and scripts are only loaded when needed, and all animations are lightweight, dependency-free JavaScript.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.44.1<\/h4>\n\n<ul>\n<li>Fixed: the 2.44.0 release accidentally gave \"Postit\" and \"Corner Frame\" quote styles full decorative CSS in the free plugin, which conflicted with the separate 3D Style Upgrade plugin's own styling for these same styles (causing a doubled\/overlapping corner-frame border) and undermined the distinction between the free and paid look. These two styles are back to a minimal, non-broken-looking padding-only appearance in the free plugin; their actual decorative design remains part of the 3D Style Upgrade.<\/li>\n<\/ul>\n\n<h4>2.44.0<\/h4>\n\n<ul>\n<li>Fixed: the \"Postit\" and \"Corner Frame\" quote box styles had no dedicated CSS at all (falling back to zero padding), and \"Line Frame\" only had 4px of horizontal padding \u2014 all three now have generous, unambiguous padding on every side. Corner Frame now also has actual corner-bracket decorations matching its name.<\/li>\n<\/ul>\n\n<h4>2.43.0<\/h4>\n\n<ul>\n<li>Changed: the \"Get from Marketplace\" tab is now browse-and-buy only (View Details \/ Buy) \u2014 the license key entry field that duplicated the admin's \"License Keys\" page has been removed from both editors, since activation only ever happened there anyway. A clearly-styled notice now explains upfront that each pack is purchased individually (no shared cart), so it's clear before checkout rather than a surprise afterward.<\/li>\n<\/ul>\n\n<h4>2.42.0<\/h4>\n\n<ul>\n<li>Version bump (no functional change from 2.41.0) to resolve a version numbering mismatch.<\/li>\n<\/ul>\n\n<h4>2.41.0<\/h4>\n\n<ul>\n<li>Added: the \"My Purchases\" page now automatically reconciles the locally-installed pack list against what the marketplace genuinely has a license for, every time the page loads \u2014 any pack without a valid license (for example, one that was installed via the 2.40.2 security bug before it was fixed) is now automatically removed, with a notice explaining what was removed and why. Previously, only additions were synced automatically; nothing removed packs that shouldn't be there.<\/li>\n<\/ul>\n\n<h4>2.40.2<\/h4>\n\n<ul>\n<li>Fixed (critical, security): the pack-browsing endpoint was made always-open in a previous release so people could preview a pack's full sticker set before buying \u2014 but the sticker pack \"Install\" action was reusing that same always-open endpoint, meaning any paid pack could be installed without a valid license. Installing now goes through a separate, properly-gated endpoint that genuinely requires a valid license for paid packs; browsing\/previewing is unaffected. Requires updating the separate marketplace admin plugin (decoblocks-marketplace) as well \u2014 if you installed any paid packs without a real license due to this bug, you'll need to deactivate\/remove them manually (Sticker Packs \u2192 Sticker Pack Licenses on this plugin's settings, or delete the entry from the site's installed-packs list).<\/li>\n<\/ul>\n\n<h4>2.40.1<\/h4>\n\n<ul>\n<li>Fixed: \"Sync my purchases now\" skipped packs that were already present locally, even if they were stuck in the broken state from before the 2.38.2 image-fix (percent-encoded folder names). It now detects that specific stale pattern and forces a proper repair download instead of leaving it broken. Requires updating the separate marketplace admin plugin (decoblocks-marketplace) as well, which now also lets you manually add an activated site to a license (useful for testing or support cases).<\/li>\n<\/ul>\n\n<h4>2.40.0<\/h4>\n\n<ul>\n<li>Added: sites that have already purchased sticker packs or the 3D Style Upgrade are now automatically recognized by domain \u2014 no license key re-entry needed. This runs automatically when the plugin is activated (covering the \"deleted and reinstalled the plugin\" case), and can also be triggered manually anytime from a new \"Restore Previous Purchases\" section on the License Keys page. Requires updating the separate marketplace admin plugin (decoblocks-marketplace) as well.<\/li>\n<\/ul>\n\n<h4>2.39.0<\/h4>\n\n<ul>\n<li>Added: a \"License History \u2014 Reinstall\" section on the License Keys page. Every license key ever verified on this site (sticker packs and the 3D Style Upgrade) is now remembered, whether or not it's currently installed \u2014 if a pack gets deleted or the 3D plugin file gets lost, you can reinstall\/re-download it with one click instead of digging through old purchase emails. Also added a way to paste a 3D Style Upgrade key you haven't used on this site before and get a fresh download link immediately.<\/li>\n<\/ul>\n\n<h4>2.38.2<\/h4>\n\n<ul>\n<li>Fixed (critical): sticker packs purchased and installed with a non-ASCII (Korean, Japanese) name downloaded successfully but showed completely broken images and could not be used \u2014 the local folder the images were saved to was named using an already-percent-encoded string, which doesn't match the decoded path a browser\/webserver looks for. Downloaded images are now stored under the pack's numeric ID instead, which has no such encoding mismatch possible.<\/li>\n<li>Changed: the sticker picker's tabs are reordered and relabeled for clarity \u2014 \"My Packs\" (what you've actually purchased) now comes first, then \"Get from Marketplace\", then \"3D Styles\", with the built-in placeholder stickers moved to a clearly-labeled \"Test Samples\" tab at the end. Previously, purchased packs were mixed into the same list as development placeholder stickers, which looked like your purchase was being treated as a demo.<\/li>\n<\/ul>\n\n<h4>2.38.1<\/h4>\n\n<ul>\n<li>Fixed: hovering over \"Buy 3D Style Upgrade\" in the block inserter made the screen flicker continuously \u2014 the inserter's hover-preview was actually running the block's real code, which opens a purchase popup and removes itself. The block now only does that when genuinely inserted into a post, not during an inserter preview.<\/li>\n<\/ul>\n\n<h4>2.38.0<\/h4>\n\n<ul>\n<li>Added: search (by pack title or designer name) and pagination to the \"Get from Marketplace\" tab in both editors, so browsing stays usable as the number of available packs grows past a single screen. Requires updating the separate marketplace admin plugin (decoblocks-marketplace) as well.<\/li>\n<\/ul>\n\n<h4>2.37.8<\/h4>\n\n<ul>\n<li>Fixed: pack detail lookups for non-ASCII (Korean, Japanese) slugs kept failing across multiple attempted encoding fixes. This release replaces slug-based detail lookups entirely with the pack's numeric ID, which has no encoding representation to get wrong in the first place. Requires updating the separate marketplace admin plugin (decoblocks-marketplace) as well.<\/li>\n<\/ul>\n\n<h4>2.37.7<\/h4>\n\n<ul>\n<li>Fixed: viewing details for any pack with a non-ASCII (Korean, Japanese, etc.) slug failed, while ASCII-slug packs worked fine \u2014 the pack-detail proxy was double URL-encoding the slug (<code>sanitize_title()<\/code> already percent-encodes non-Latin slugs; encoding it again turned every <code>%<\/code> into <code>%25<\/code>, corrupting it beyond recognition on the marketplace server).<\/li>\n<\/ul>\n\n<h4>2.37.6<\/h4>\n\n<ul>\n<li>Changed (marketplace-side design fix): the pack detail\/preview view no longer requires a license key to show the full sticker list \u2014 browsing a pack to decide whether to buy it should never have been gated. The license key is only checked at actual install\/download time, which is the real protection point. Requires updating the separate marketplace admin plugin (decoblocks-marketplace) as well.<\/li>\n<\/ul>\n\n<h4>2.37.5<\/h4>\n\n<ul>\n<li>Fixed: viewing a paid pack's details without a valid license key entered showed a completely empty grid instead of falling back to the 8-item preview \u2014 an empty result from the server was being treated the same as \"fully unlocked with zero stickers\" due to a JavaScript truthiness bug (<code>[]<\/code> is truthy). The preview + \"license required\" message now shows consistently for any locked pack, and the full list shows consistently once a valid key is entered.<\/li>\n<\/ul>\n\n<h4>2.37.4<\/h4>\n\n<ul>\n<li>Fixed: opening a pack's detail view failed silently for any non-ASCII slug (Korean, Japanese, etc.) because the slug was not URL-encoded before being placed in the REST request path \u2014 this made the detail view fall back to the 8-item preview instead of loading the full sticker list.<\/li>\n<\/ul>\n\n<h4>2.37.3<\/h4>\n\n<ul>\n<li>Fixed: the 2.37.2 package that was distributed did not actually contain the \"detail view fetches full sticker list\" fix described in its own changelog \u2014 the zip was built from an out-of-date snapshot. This release re-packages the same fix correctly and re-verifies the built zip's contents match the source before distribution.<\/li>\n<\/ul>\n\n<h4>2.37.2<\/h4>\n\n<ul>\n<li>Changed: the \"Get from Marketplace\" tab (both editors) no longer hides packs based on your site's language \u2014 the marketplace server now always returns every published pack. Instead, a language section switcher (All \/ \ud55c\uad6d\uc5b4 \/ \u65e5\u672c\u8a9e \/ English) lets you narrow the list yourself, and each pack shows a small language badge. This avoids an empty-looking list while each language's pack inventory is still small.<\/li>\n<li>Fixed (marketplace-side): the \"View \/ Buy\" link and pack-detail lookup returned a 404 for any pack with a non-ASCII slug (Korean, Japanese, etc.) \u2014 the underlying REST route pattern only accepted English letters\/digits\/hyphens. Requires updating the separate marketplace admin plugin (decoblocks-marketplace) as well.<\/li>\n<\/ul>\n\n<h4>2.37.1<\/h4>\n\n<ul>\n<li>Fixed: a bug in the previous release could corrupt the Classic Editor's sticker picker window layout when switching between its tabs. The picker now closes and reopens a fresh window on every tab switch instead of rewriting the open window's contents in place, which is a more reliable pattern for this editor's older window-management code.<\/li>\n<li>Changed: \"Get from Marketplace\" is now the tab shown by default (loading automatically) in both editors' sticker picker, since the bundled sample stickers are placeholder-quality only. The sample tab is now labeled \"Sample Packs\" and is the secondary option.<\/li>\n<\/ul>\n\n<h4>2.37.0<\/h4>\n\n<ul>\n<li>Added: the Classic Editor's sticker picker now has a \"Get from Marketplace\" tab, matching the Block Editor \u2014 browse available packs, or paste a license key to install a pack directly, without switching editors. Previously the Classic Editor only showed already-installed packs with no way to get more.<\/li>\n<\/ul>\n\n<h4>2.36.9<\/h4>\n\n<ul>\n<li>Fixed: the entire Classic Editor experience (every TinyMCE toolbar button and every QuickTags text-mode button \u2014 Speech Bubble, Section Box, Quote Box, Divider, Highlight, Table of Contents, Sparkle, Glow, Firework, Bullet List, and Insert Sticker, including their 3D variants) was inserting an outdated shortcode tag left over from the 2.36.7 prefix cleanup, so none of these buttons produced any visible output. All of them now insert the correct tag.<\/li>\n<li>Fixed: the Editor Settings page (branding credit checkbox, color palette) had a form field name left over from before the 2.36.7 menu restructure that no longer matched the registered setting, so saving that page silently did nothing. Settings on this page now save correctly.<\/li>\n<li>Internal: re-verified every option name, shortcode registration, settings-page form field, admin-post action, and enqueue handle against its registration to make sure no other leftovers were missed.<\/li>\n<\/ul>\n\n<h4>2.36.8<\/h4>\n\n<ul>\n<li>Added: Japanese (ja) sites now get sticker pack listings in Japanese from the marketplace, in addition to the existing Korean\/English support.<\/li>\n<\/ul>\n\n<h4>2.36.7<\/h4>\n\n<ul>\n<li>Changed: the single \"DecoBlocks Settings\" page has been split into three separate menu items, matching how the marketplace's admin plugin is organized: \"\ud83d\udce6 My Purchases\" (a read-only dashboard showing 3D Style Upgrade status and every sticker pack you own, at a glance \u2014 this is now the first thing you see), \"\ud83d\udd11 License Keys\" (the only place you enter a sticker pack key; the 3D Style Upgrade key is entered on its own separate plugin's page, linked from here), and \"\u2699\ufe0f Editor Settings\" (color palette, branding credit \u2014 cosmetic settings that were previously shown before purchase status, now moved out of the way).<\/li>\n<\/ul>\n\n<h4>2.36.6<\/h4>\n\n<ul>\n<li>Fixed: the \"decobl-firework\" script was only registered on the published-post frontend, not in the block editor \u2014 if the separate \"DecoBlocks 3D Style Upgrade\" plugin is active, its firework confetti script depends on this handle and was silently failing to load while writing a post. It's now registered in both places.<\/li>\n<li>Fixed: the 3D Style Upgrade card in DecoBlocks Settings now distinguishes three separate states (license active \/ plugin installed but not yet licensed \/ plugin not installed) instead of only two, with a direct link to the separate plugin's own license page in the two \"not fully active\" states.<\/li>\n<\/ul>\n\n<h4>2.36.5<\/h4>\n\n<ul>\n<li>Fixed: every DecoBlocks block (and its 3D variation) now shows an actual hover preview in the block inserter, instead of a \"No preview available\" placeholder \u2014 added an <code>example<\/code> definition to all 12 blocks so their real appearance is visible before inserting. (Insert Sticker and Buy 3D Style Upgrade are interactive\/action blocks with no fixed visual output, so they show an empty preview rather than a placeholder \u2014 that's inherent to how they work, not a bug.)<\/li>\n<\/ul>\n\n<h4>2.36.4<\/h4>\n\n<ul>\n<li>Changed: the DecoBlocks 3D Style Upgrade is now a completely separate, independently-installed plugin. This plugin no longer downloads, stores, or enqueues any CSS\/JS from a remote server for it \u2014 it only detects whether that separate plugin is installed and licensed. The \"3D Style License Key\" field has been removed from this plugin's settings screen (license activation now happens on the separate plugin's own settings page).<\/li>\n<li>Fixed: sticker pack image downloads are now validated before being saved \u2014 only png\/gif\/jpg\/jpeg\/webp files are accepted, the actual file content is verified to be a real image (not just trusting the file extension from the remote URL), and SVG is explicitly rejected (SVG files can contain executable script tags, unlike other image formats).<\/li>\n<\/ul>\n\n<h4>2.36.3<\/h4>\n\n<ul>\n<li>Hardened further: removed the \"Marketplace Server URL\" setting entirely. It served no purpose for regular users (there was never a reason to point it anywhere other than our own marketplace) and was one more thing that could theoretically be tampered with. Every part of the plugin that talks to the marketplace now uses a single fixed address that can't be changed through any setting.<\/li>\n<\/ul>\n\n<h4>2.36.2<\/h4>\n\n<ul>\n<li>Fixed: the 3D Style Upgrade CSS\/JS download now only ever fetches from a single hardcoded, trusted server address (it can no longer be pointed anywhere else, even by changing plugin settings), requires HTTPS with certificate verification, checks the response's Content-Type header, and rejects the response outright if it contains a PHP execution tag, before anything is written to disk.<\/li>\n<li>Fixed: removed the last two <code>dbk_<\/code>-prefixed shortcode registrations (<code>dbk_sticker<\/code> and the <code>dbk_*<\/code> block shortcodes) that were kept as backward-compatible aliases \u2014 all shortcodes now use only the <code>decobl_<\/code> prefix.<\/li>\n<\/ul>\n\n<h4>2.36.1<\/h4>\n\n<ul>\n<li>Fixed: toggling the 3D star button on Speech Bubble, Section Box, Custom Bullet List, Sparkle Text, Glow Box, Quote Box, Divider Line, and Table of Contents previously showed no explanation when the 3D Style Upgrade wasn't purchased yet \u2014 it just looked identical to the non-3D version, which could look like a bug. Every 3D-capable block now shows a clear \"This is a preview only, purchase required to publish\" note (previously this note only existed on the Highlight and Firework blocks).<\/li>\n<\/ul>\n\n<h4>2.36.0<\/h4>\n\n<ul>\n<li>Fixed: all style\/color\/option choices across every block are now always available in the free version (previously some were disabled behind a license check, which is not allowed for plugins hosted on WordPress.org). The DecoBlocks 3D Style Upgrade remains a separate paid add-on, but its CSS\/JS now ships only as an external download after purchase, rather than as license-gated code inside this plugin.<\/li>\n<li>Fixed: all function\/class\/option names, shortcode tags, and script handles now use a proper 4+ character prefix (decobl_\/DECOBL_) to avoid collisions with other plugins\/themes. Existing content using the old short shortcode tags (e.g. [dbk_bubble]) keeps working via a backward-compatible alias.<\/li>\n<li>Fixed: the \"Get from Marketplace\" sticker tab and pack browsing no longer require any special unlock state \u2014 installing a specific paid pack is still gated by that pack's own license key, same as before.<\/li>\n<li>Fixed: install-pack REST endpoint now requires manage_options (it writes a site-wide option and downloads files), instead of the weaker edit_posts.<\/li>\n<li>Fixed: removed an unnecessary load of wp-admin\/includes\/media.php and image.php \u2014 no functions from either file were actually used.<\/li>\n<li>Removed: load_plugin_textdomain() call, unnecessary since WordPress 4.6 for plugins hosted on WordPress.org.<\/li>\n<li>Removed: bundled .po\/.mo\/.json translation files from the plugin package \u2014 translations are now handled entirely through translate.wordpress.org.<\/li>\n<\/ul>\n\n<h4>2.35.1<\/h4>\n\n<ul>\n<li>Fixed: the new heading tag\/font size panel (added in 2.35.0) was easy to miss \u2014 it appeared collapsed and, for Korean-language sites, showed its label in English (\"Typography\") since the new strings hadn't been added to the Korean translation file yet. It now opens automatically (matching how core blocks like Paragraph show their Typography section) and is fully translated to Korean when the site\/user language is Korean, with the original English text still shown on English-language sites.<\/li>\n<\/ul>\n\n<h4>2.35.0<\/h4>\n\n<ul>\n<li>New: every text-content block (Speech Bubble, Section Box, Highlight, Sparkle Text, Glow Box, Firework Effect caption, and all Quote Box styles) now lets you independently choose a real heading tag (H2\u2013H6) or keep it as plain text, plus an independent font size \u2014 entirely your call, whether or not you want the text picked up as a heading by search engines. Existing content is unaffected; if you don't touch these new options your posts render exactly as before.<\/li>\n<li>Changed: the Block Editor's \"(3D)\" inserter entries now show a clean \"\u2728 [Block Name] (3D)\" label with no purchase explanation on sites where the 3D Style Upgrade is already unlocked. Sites that haven't purchased it yet still see the existing \"(3D \u2014 Purchase Required to Publish)\" label and explanation, unchanged.<\/li>\n<li>Changed: removed the developer-only \"Preview Pro Mode\" checkbox from Settings \u2014 it had no real purchase verification behind it (unlike Sticker Packs and the 3D Style Upgrade, which are both license-checked against the marketplace). The handful of style\/color options it used to gate (extra quote &amp; divider styles, expanded bullet icon sets, custom color palette, no-branding footer, configurable firework timing\/colors\/particles) are now bundled into the already-licensed 3D Style Upgrade add-on instead of being a separately \"checked\" tier with no real enforcement.<\/li>\n<\/ul>\n\n<h4>2.34.1<\/h4>\n\n<ul>\n<li>Changed: \"External services\" section now links directly to the actual Terms of Service, Privacy Policy, Refund Policy, and Contact pages, instead of the marketplace's homepage<\/li>\n<\/ul>\n\n<h4>2.34.0<\/h4>\n\n<ul>\n<li>Fixed: the \"Show a small Powered by DecoBlocks credit\" option was defaulting to on and could only be turned off in the Pro version \u2014 it now defaults to off on both fresh installs and existing sites, and can be freely turned on\/off regardless of Free\/Pro<\/li>\n<li>Changed: \"Sticker Pack License Key\" moved out of the main Save Changes form into its own input + dedicated \"Add\" button, so adding a pack key no longer re-saves every other setting on the page<\/li>\n<li>Changed: full visual redesign of the DecoBlocks settings screen \u2014 card-based sections, a branded header, colored status indicators, and an \"Installed Sticker Packs\" chip grid, matching DecoBlocks' visual identity<\/li>\n<li>Added: \"External services\" documentation describing exactly what data is sent to the marketplace server and when<\/li>\n<\/ul>\n\n<h4>2.33.0<\/h4>\n\n<ul>\n<li>New: DecoBlocks settings screen now has a \"Sticker Pack License Key\" field \u2014 paste a license key from your purchase email and save, and the pack is looked up, downloaded, and installed automatically. No more needing to know which pack a key belongs to or hunting for the right tab in the block editor<\/li>\n<li>New: settings screen now lists all \"Installed Sticker Packs\" with their sticker counts, so it's easy to confirm what's already installed<\/li>\n<li>New: if a 3D Style Upgrade key is accidentally pasted into the new sticker pack field, it's automatically applied to the 3D license field instead of failing with an error<\/li>\n<li>Note: requires decoblocks-marketplace v4.10.0 or later on the marketplace server for the new lookup-by-key endpoint<\/li>\n<\/ul>\n\n<h4>2.32.0<\/h4>\n\n<ul>\n<li>Fixed: the Block Editor \"\u2728 Buy 3D Style Upgrade\" inserter item looked the same as every other block (grey outline icon) and, when clicked, left an empty block sitting in the post that had to be manually deleted. It now shows a colorful \"3D\" icon so it stands out from other items, and clicking it opens a purchase modal immediately (same as Insert Sticker) instead of leaving anything in the post content<\/li>\n<\/ul>\n\n<h4>2.31.0<\/h4>\n\n<ul>\n<li>Fixed: the 2.30.0 \"Buy 3D Style Upgrade\" fix only covered the Classic Editor menu \u2014 the Block Editor (Gutenberg) inserter had no equivalent, so the fix was incomplete. Added a matching \"\u2728 Buy 3D Style Upgrade\" block, placed right after \"Insert Sticker\" as the second item in the DecoBlocks block category, same position as the Classic Editor menu<\/li>\n<\/ul>\n\n<h4>2.30.0<\/h4>\n\n<ul>\n<li>New: Classic Editor now has an explicit \"Buy 3D Style Upgrade\" menu item, placed right after \"Insert Character Sticker\" as the second item, instead of only being reachable indirectly<\/li>\n<li>Fixed: Classic Editor didn't have access to the marketplace URL at all, so this new button couldn't have worked without it \u2014 added the missing localization<\/li>\n<\/ul>\n\n<h4>2.29.0<\/h4>\n\n<ul>\n<li>Fixed: classic-editor \"Speech Bubble (Right)\" inserted with an orange color by default (both 2D and 3D), while \"Speech Bubble (Left)\" used black \u2014 position and color were incorrectly tied together. Both now default to the same black, matching the block editor's behavior; color is an independent choice either way<\/li>\n<\/ul>\n\n<h4>2.28.0<\/h4>\n\n<ul>\n<li>Fixed: Table of Contents links had no color set, so they fell back to the browser's default link blue instead of following the site's normal text color \u2014 links now inherit the surrounding text color<\/li>\n<\/ul>\n\n<h4>2.27.0<\/h4>\n\n<ul>\n<li>Fixed: Speech Bubble used <code>display: inline-flex<\/code>, which is inline-level \u2014 two bubbles typed on separate lines could end up sitting side-by-side on the same row instead of stacking, in both 2D and 3D. Changed to <code>display: flex<\/code> (block-level) so each bubble always starts on its own line<\/li>\n<li>Fixed: the classic-editor \"Insert Firework Effect\" menu items (both 2D and 3D) inserted the shortcode with no caption text at all, since the firework's text is a <code>label<\/code> attribute rather than wrapped content \u2014 it now inserts a default \"Congrats!\" label so there's something visible to edit<\/li>\n<\/ul>\n\n<h4>2.26.0<\/h4>\n\n<ul>\n<li>New: Highlight's 3D Gradient Glow color is no longer fixed to yellow \u2014 a color palette control now appears in the sidebar (and via a new <code>gradient_color<\/code> shortcode attribute) to pick any color, which fades from solid to transparent left-to-right<\/li>\n<li>New: classic-editor 3D menu expanded to a full one-to-one match with the block editor \u2014 every Quote Box style (6) and every Divider Line style (7) now has its own separate 3D entry, each explicitly labeled \"(3D \u2014 Purchase Required to Publish)\" so it's clear these require the paid upgrade to actually appear on a published post (this labeling was added to the block editor's inserter titles too, for consistency)<\/li>\n<li>New: classic editor gained a dedicated \"Insert Character Sticker\" button and menu item \u2014 it previously had no way to insert marketplace stickers at all. Opens a picker showing installed sticker packs; also added a matching [dbk_sticker] shortcode<\/li>\n<li>Fixed: Quote Box, Section Box, Glow Box, and Table of Contents were left-aligned by default with no way to visually center them \u2014 added default center alignment (with a sensible max-width for Section Box\/Glow Box so the centering is actually visible). Speech Bubble and Custom Bullet List were left as-is intentionally (bubbles use left\/right by design; lists read better left-aligned)<\/li>\n<\/ul>\n\n<h4>2.25.0<\/h4>\n\n<ul>\n<li>Fixed: Highlight's 2D colors (yellow\/green) had the same CSS specificity bug as the 3D version \u2014 background wasn't rendering on the published post. Fixed alongside the 3D fix in the same release<\/li>\n<li>New: Classic Editor 3D menu \u2014 initial pass adding one representative 3D item per block family<\/li>\n<\/ul>\n\n<h4>2.24.0<\/h4>\n\n<ul>\n<li>Fixed (best diagnosis, pending live confirmation): the [dbk_highlight] shortcode's  output was disappearing entirely on the published page (leaving only plain unstyled text) \u2014 WordPress's content security filter (kses) likely doesn't include  in its default allowed-tags list, so it silently stripped the tag. Explicitly whitelisted  with class\/style attributes via wp_kses_allowed_html<\/li>\n<\/ul>\n\n<h4>2.23.0<\/h4>\n\n<ul>\n<li>Version bump only (packaging fix)<\/li>\n<\/ul>\n\n<h4>2.22.0<\/h4>\n\n<ul>\n<li>Fixed: Custom Bullet List and Table of Contents didn't visually reflect the 3D toggle in the block editor at all (only on the published post) \u2014 TOC's editor preview now shows the same double-ring border as the real 3D version, and Bullet List's icons now show the same raised circular badge in the editor<\/li>\n<li>New: Classic Editor (TinyMCE) support was built long before the 3D system existed and was never updated \u2014 the insert-element dropdown had zero 3D options. Added a full \"\u2728 3D Styles\" section covering Speech Bubble, Section Box, Highlight, Custom Bullet List, Table of Contents, Sparkle Text, Glow Box, Firework Effect, Quote Box, and Divider Line, plus matching Quicktags (text-mode) buttons for Box\/Highlight\/Glow\/Divider<\/li>\n<li>Fixed: none of the classic-editor shortcodes ([dbk_bubble], [dbk_box], [dbk_quote], [dbk_divider], [dbk_bullets], [dbk_toc], [dbk_sparkle], [dbk_glow]) accepted an is3d attribute at all, even though the underlying renderer functions already supported it \u2014 shortcodes now properly pass is3d through<\/li>\n<\/ul>\n\n<h4>2.21.0<\/h4>\n\n<ul>\n<li>Fixed (verified live on a real site): Highlight's 3D gradient wasn't rendering at all \u2014 a base rule (<code>mark.dbk-highlight { background: none; }<\/code>) had higher CSS specificity (tag+class) than the 3D variant rule (class only), so it always won regardless of source order and silently cancelled the gradient. The 3D rule's selector is now <code>.dbk-highlight.dbk-highlight--gradient3d<\/code> (matching specificity, correctly overriding the base rule)<\/li>\n<li>Verified live: postit vignette, TOC double-ring border, and the enlarged Custom Bullet List 3D badge were all re-checked directly on a published post via computed styles and confirmed working as intended<\/li>\n<\/ul>\n\n<h4>2.20.0<\/h4>\n\n<ul>\n<li>Fixed: Quote Box \"Sticky Note\" style's 3D version looked identical to 2D \u2014 now has a paper-like vignette gradient, deeper shadow, and a more pronounced folded corner<\/li>\n<li>Fixed: Table of Contents 3D vs 2D was hard to tell apart \u2014 added a visible double-ring border for a clearer layered\/embossed feel<\/li>\n<li>Fixed: Highlight's 3D effect was too subtle to notice at a glance \u2014 replaced with an immediately visible left-to-right color gradient (dark yellow fading to light), combined with a subtle shadow for depth<\/li>\n<li>Fixed: Custom Bullet List's 3D badge was barely different in size from 2D \u2014 enlarged significantly and given a visible ring border for a clearer distinction<\/li>\n<\/ul>\n\n<h4>2.19.0<\/h4>\n\n<ul>\n<li>Changed: 3D effects completely redesigned \u2014 \"3D\" now means real depth (shadows, embossing, elevation), not rainbow color. The generic gradient-border\/rainbow treatment reused across every block has been replaced with bespoke, depth-based effects per block<\/li>\n<li>Fixed: Custom Bullet List's 3D version looked identical to 2D \u2014 icons now get a genuinely raised circular badge with real shadow\/bevel<\/li>\n<li>Fixed: Highlight's 3D version was a static colored box \u2014 replaced with a dark highlighter-style mark that animates left-to-right with a real drop shadow underneath<\/li>\n<li>Fixed: Quote Box 3D looked identical to Section Box 3D (both used the exact same generic effect) \u2014 quotes now get a distinct \"carved\/inset\" look, boxes get a \"lifted card\" look<\/li>\n<li>Fixed: all 7 Divider Line styles collapsed into the same rainbow bar in 3D mode, destroying their individual shapes \u2014 each style now gets its own bespoke 3D treatment (embossed bar, beveled dashes, raised dot beads, a faceted 3D diamond gem, an animated flying-in arrow, a carved diagonal slash, a raised tick mark)<\/li>\n<li>New: Auto Table of Contents now has a 3D version (elevated card with embossed numbered badges), which it previously lacked entirely<\/li>\n<\/ul>\n\n<h4>2.18.0<\/h4>\n\n<ul>\n<li>New: every 3D-capable block (Speech Bubble, Section Box, Custom Bullet List, Highlight, Sparkle Text, Glow Box, Firework Effect, all 6 Quote Box styles, all 7 Divider Line styles) now also appears as a separate \"\u2728 ... (3D)\" entry directly in the block inserter list, using WordPress's native block variations \u2014 so the 3D option is visible and insertable from the block list itself, not only via the in-canvas toolbar toggle<\/li>\n<\/ul>\n\n<h4>2.17.0<\/h4>\n\n<ul>\n<li>New: \"\u2728 3D Styles\" tab added to the sticker picker (alongside Installed Packs \/ Get from Marketplace) \u2014 the highest-traffic screen now directly promotes the 3D upgrade, explains exactly which blocks support it and how to toggle it (the toolbar star button), and links straight to checkout<\/li>\n<li>New: DBK_DATA now carries the configured marketplace URL so the editor can build a direct purchase link without any extra request<\/li>\n<\/ul>\n\n<h4>2.16.0<\/h4>\n\n<ul>\n<li>Fixed: the sticker block rendered left-aligned on the published post despite showing centered in the editor \u2014 now centered by default on both, with left\/center\/right all supported<\/li>\n<\/ul>\n\n<h4>2.15.0<\/h4>\n\n<ul>\n<li>Fixed: Custom Bullet List's 3D toggle had no actual CSS effect (attribute\/toolbar button existed but the visual was never implemented) \u2014 added a genuine rainbow-accent 3D treatment<\/li>\n<li>Fixed: Quote Box \"Classic\" and \"Big Quotation Marks\" used nearly identical quote-mark icons in the block list, despite looking completely different once inserted \u2014 icons reassigned so each better matches its real appearance<\/li>\n<li>Fixed: \"Big Quotation Marks\" style only had an opening quotation mark, not a closing one \u2014 added the matching closing mark<\/li>\n<li>Changed: quote text is now noticeably larger across all 6 Quote Box styles (it's meant to carry a short \"topic title\", not body copy)<\/li>\n<li>Changed: the source\/author field for Quote Box is no longer a sidebar-only text field \u2014 it's now a small, light, directly-editable text area inside the block itself, right under the quote<\/li>\n<li>New: the \"Get from Marketplace\" pack list now shows a notice that items must be purchased individually (no combined cart checkout), due to a Lemon Squeezy platform limitation<\/li>\n<\/ul>\n\n<h4>2.14.0<\/h4>\n\n<ul>\n<li>Fixed: Highlight's 3D Gradient Glow was too subtle to notice (a faint underline) \u2014 rebuilt as a bold, unmistakable animated gradient background with white text<\/li>\n<li>Changed: 3D options are no longer hidden inside the sidebar dropdown only \u2014 every 3D-capable block now shows a star (\u2605) toolbar button the moment it's selected, so the option is immediately visible instead of \"hidden\"<\/li>\n<li>New: 3D Premium versions added to Speech Bubble, Section Box, all 6 Quote Box styles, all 7 Divider Line styles, Glow Box, Sparkle Text, and Custom Bullet List \u2014 each gets a distinct, genuinely \"fancier\" 3D treatment (gradient border + elevated shadow for boxes\/bubbles\/quotes, animated gradient line for dividers, rainbow pulse for glow box, rainbow shimmer for sparkle text), always previewable in the editor, always gated to a valid 3D license on the published post<\/li>\n<li>New: \"Quote Box - Big Quotation Marks\" style added \u2014 a real oversized decorative quotation mark (previously only mentioned in a code comment on the Classic style but never actually implemented)<\/li>\n<\/ul>\n\n<h4>2.13.0<\/h4>\n\n<ul>\n<li>Improved: the pack detail view (from \"View Details\") now keeps the title, price, license  &hellip;<\/li>\n<\/ul>","raw_excerpt":"Writing that expresses real human emotion \u2014 DecoBlocks turns it into something cooler, more fun, and more lovable.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/351489","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=351489"}],"author":[{"embeddable":true,"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/luxsnap"}],"wp:attachment":[{"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=351489"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=351489"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=351489"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=351489"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=351489"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=351489"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}