{"id":390769,"date":"2026-11-09T08:18:31","date_gmt":"2026-11-09T08:18:31","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/aumframe\/"},"modified":"2026-11-09T08:17:55","modified_gmt":"2026-11-09T08:17:55","slug":"aumframe","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/aumframe\/","author":23467794,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.39.3","stable_tag":"1.39.3","tested":"7.1.4","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Aumframe","header_author":"aumcreate","header_description":"An atomic visual editor \u2014 Frame primitives, relational sizing, variants and motion, plus WordPress dynamic data.","assets_banners_color":"412519","last_updated":"2026-11-09 08:17:55","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":90,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.39.3":{"tag":"1.39.3","author":"aumcreate","date":"2026-11-09 08:17:55","revision":3792025}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3792023,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3792023,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3792023,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3792023,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3792023,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.39.3"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[785,1332,4036,1084,4516],"plugin_category":[43,46,50],"plugin_contributors":[278530],"plugin_business_model":[],"class_list":["post-390769","plugin","type-plugin","status-publish","hentry","plugin_tags-animation","plugin_tags-editor","plugin_tags-layout","plugin_tags-page-builder","plugin_tags-templates","plugin_category-customization","plugin_category-editor-and-writing","plugin_category-media","plugin_contributors-aumcreate","plugin_committers-aumcreate"],"banners":{"banner":"https:\/\/ps.w.org\/aumframe\/assets\/banner-772x250.png?rev=3792023","banner_2x":"https:\/\/ps.w.org\/aumframe\/assets\/banner-1544x500.png?rev=3792023","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/aumframe\/assets\/icon.svg?rev=3792023","icon":"https:\/\/ps.w.org\/aumframe\/assets\/icon.svg?rev=3792023","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Aumframe is a visual editor built around one idea: you design a <strong>template<\/strong>, and the template decides which pages it draws. Give it a rule \u2014 the front page, every post in a category, single products, search results, 404 \u2014 and every page that matches is laid out by that one design. Change the design once and all of them change.<\/p>\n\n<p>Layout is done with frames and relational sizing rather than fixed columns, so a row can say \"this part takes the space that is left\" instead of \"this part is 480 pixels\". The same design holds together at phone width without a separate mobile version to maintain.<\/p>\n\n<p>What it gives you:<\/p>\n\n<ul>\n<li><strong>Templates by rule<\/strong> \u2014 front page, singular, archive, taxonomy term, search, 404, plus per-slug rules and a priority when two rules could both match<\/li>\n<li><strong>A shell<\/strong> with a slot: the header and footer you design once, with each template's content dropped into the slot<\/li>\n<li><strong>Reusable components<\/strong> \u2014 build a card once, place it anywhere; editing the component updates every instance<\/li>\n<li><strong>Dynamic data<\/strong> \u2014 bind text, images and links to the post, term, author, meta field or query being shown, so one design fills itself from content<\/li>\n<li><strong>Loops<\/strong> \u2014 a row that repeats over a query, with the query written in the editor rather than in code<\/li>\n<li><strong>Motion<\/strong> \u2014 entrance, scroll-linked and looping animation, compiled to the same output the front end uses<\/li>\n<li><strong>Revisions<\/strong> on every design, with a read-back check so a save that did not land is reported instead of silently lost<\/li>\n<li><strong>Per-language variants<\/strong> of a design, for sites running a translation plugin<\/li>\n<li><strong>Kits<\/strong> \u2014 export a whole site's designs, content model, components and media as one file, and import it into another site<\/li>\n<\/ul>\n\n<p>Aumframe does not render your designs on every page load. The layout is compiled to HTML and CSS in the browser when you save, and PHP only fills in the dynamic parts. There is one compiler, in one language, so what you see while editing is what visitors get.<\/p>\n\n<h4>Where it stores things<\/h4>\n\n<p>Four tables of its own: <code>aumframe_templates<\/code>, <code>aumframe_revisions<\/code>, <code>aumframe_template_i18n<\/code> and <code>aumframe_components<\/code>. Your posts, pages and media stay where WordPress keeps them \u2014 Aumframe reads them, it does not move them.<\/p>\n\n<h4>WP-CLI<\/h4>\n\n<ul>\n<li><code>wp aumframe import &lt;file&gt;<\/code> \u2014 import a kit<\/li>\n<li><code>wp aumframe kit-requires &lt;file&gt;<\/code> \u2014 print what a kit needs before you import it<\/li>\n<\/ul>\n\n<h3>Build<\/h3>\n\n<p>The front end runs the source directly; nothing about it is compiled. The editor is bundled because it is written with JSX, and because one file means one <code>?ver=<\/code> to invalidate.<\/p>\n\n<p>Everything needed to rebuild it ships inside this plugin \u2014 <code>packages\/core\/src<\/code>, <code>packages\/editor\/src<\/code>, <code>packages\/runtime\/src<\/code>, <code>build.mjs<\/code>, <code>package.json<\/code> and <code>package-lock.json<\/code>. From the plugin's own folder:<\/p>\n\n<pre><code>npm ci &amp;&amp; node build.mjs\n<\/code><\/pre>\n\n<p>That writes three files, and the build is deterministic \u2014 the same source and the same lockfile give byte-identical output. For this release, sha256:<\/p>\n\n<ul>\n<li><code>assets\/editor.js<\/code> \u2014 <code>acb7f130204650a0a9a53f02986362b282ae0343d68eed92a7a4ad143a2bd586<\/code><\/li>\n<li><code>assets\/motion.js<\/code> \u2014 <code>1992377aa2274be47ce353652169f659032f020694eeb4b84c4048136771b637<\/code><\/li>\n<li><code>assets\/editor.css<\/code> \u2014 <code>125b366178f856065f4e11bf283cade2182cc09a93c528db1e6ba1e0502de313<\/code><\/li>\n<\/ul>\n\n<p>Built and checked with Node 24 and esbuild 0.25. The other files in <code>assets\/<\/code> are written by hand and are not build output.<\/p>\n\n<pre><code>npm test runs the core, schema, style, editor-store and renderer suites, plus a regression that re-bakes the templates of three frozen reference sites and requires the output to be byte-identical.\n<\/code><\/pre>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>aumframe<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the zip from Plugins &gt; Add New<\/li>\n<li>Activate the plugin through the Plugins screen<\/li>\n<li>Open <strong>Aumframe<\/strong> in the admin menu and create your first design<\/li>\n<li>Give it a rule \u2014 start with the front page \u2014 and save<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20replace%20the%20block%20editor%3F\"><h3>Does it replace the block editor?<\/h3><\/dt>\n<dd><p>No. A design only takes over the pages its rule matches; everything else keeps rendering the way your theme renders it. On a page that Aumframe draws, the block editor still opens and still stores your content \u2014 Aumframe shows that content in the place its design gives the page body.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20my%20theme%3F\"><h3>Does it work with my theme?<\/h3><\/dt>\n<dd><p>For the pages it draws, Aumframe supplies the whole document, so the theme's templates are not involved. The header and footer on those pages come from the shell you design. Themes that add styles or scripts through the normal hooks keep working.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20designs%20if%20i%20deactivate%20the%20plugin%3F\"><h3>What happens to my designs if I deactivate the plugin?<\/h3><\/dt>\n<dd><p>Pages go back to being rendered by your theme. Nothing is deleted \u2014 the designs stay in their tables and come back when you reactivate. Deleting the plugin removes them.<\/p><\/dd>\n<dt id=\"is%20the%20editor%27s%20javascript%20included%20as%20source%3F\"><h3>Is the editor's JavaScript included as source?<\/h3><\/dt>\n<dd><p>Yes. <code>packages\/core\/src<\/code>, <code>packages\/editor\/src<\/code> and <code>packages\/runtime\/src<\/code> ship with the plugin. The front-end runtime is plain ES modules and is loaded as-is, with no build step at all. Only the editor is bundled, into <code>assets\/editor.js<\/code>, with esbuild \u2014 see <strong>Build<\/strong> below.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<p>The full history, including older releases, is in <code>changelog.txt<\/code> inside the plugin folder.<\/p>\n\n<h4>1.39.3<\/h4>\n\n<ul>\n<li>Changed: stylesheets are now generated by the plugin from a template's own stored values.\nThe save endpoints and the kit importer no longer read CSS from what they are given: the\ncompiler walks the node tree, emits one rule per node and builds every selector itself from\nan identifier it has checked.<\/li>\n<li>Changed: a style rule written as text is parsed into declarations and rebuilt rather than\npassed through. A declaration is kept when its value uses only the functions listed in\n  packages\/core\/src\/css-properties.json; <code>url()<\/code> is refused outright, since a fill or an\nimage is its own field and carries an attachment id. The only at-rules kept are a width\nmedia query and an animation definition.<\/li>\n<li>Changed: a selector that does not name part of the design is now contained by the design's\nown root, so a rule can no longer reach the rest of the page.<\/li>\n<li>Changed: a component's stylesheet now covers its own nodes only. The front end follows the\ncomponent markers inside component markup as well, so a component used solely inside another\none keeps its styles.<\/li>\n<li>Fixed: an animation definition written in a template's style rules used to be discarded.<\/li>\n<li>Fixed: <code>array_is_list()<\/code> is a PHP 8.1 function, and WordPress began shipping a fallback for\nit in 6.5. This plugin supports PHP 7.4 and WordPress 6.2, where the new compiler would\nhave stopped the site on sight. It no longer calls it.<\/li>\n<li>Fixed: a translator comment was missing from one importer warning.<\/li>\n<li>Fixed: a rule aimed above the design \u2014 <code>html body { padding-left }<\/code>, which a sidebar pinned\nto the viewport uses to keep the page's own content clear of it \u2014 was being contained by the\ndesign's root, where it matched nothing. Custom properties and page spacing on the document\nelement are now left where they were written; anything else aimed outside is still contained.<\/li>\n<li>Changed: which selectors are contained by the design's root. A rule written with nothing\nbut element names sweeps the whole document and is contained; a rule naming a class, an id\nor an attribute is aimed at something specific and is left as written. Whether that element\nsits inside the design cannot be told from the selector, and much of what a design styles is\nprinted outside its root by something else \u2014 a booking modal goes out on <code>wp_footer<\/code> \u2014 so\ncontaining those selectors stopped them matching instead of making them safe.<\/li>\n<\/ul>\n\n<h4>1.38.2<\/h4>\n\n<ul>\n<li>Changed: wording in two older changelog entries below. They now state what changed and what\nto use instead. Nothing in this plugin is locked, limited or behind a key.<\/li>\n<\/ul>\n\n<h4>1.38.1<\/h4>\n\n<ul>\n<li>Changed: the plugin's own source comments. 322 blocks of design history and commentary were\nremoved from the files that ship, and the remaining annotations are all in English, as the\ncode and the strings already were. No behaviour changes with it. The reason is specific: an\nautomated review had read our comments as a description of what the plugin does, and a\ncomment that is read that way is worse than no comment.<\/li>\n<li>Changed: WP-CLI output (<code>wp aumframe import<\/code>, <code>kit-requires<\/code>, <code>doctor<\/code>) is now in English,\nmatching the rest of the plugin.<\/li>\n<\/ul>\n\n<h4>1.38.0<\/h4>\n\n<ul>\n<li>Fixed: with the view counter enabled, every single post page carried a broken piece of\nJavaScript. The script was assembled in a way that left four pieces of PHP in it\nunevaluated, so the browser saw a syntax error and the counter never ran. Nothing was\nlogged, because PHP itself raised nothing.<\/li>\n<li>Changed: the editor now sanitises the compiled HTML and CSS it stores. The compiler runs in\nthe browser and the result arrives over the REST API, so it is treated as submitted data:\nit is filtered against WordPress's own allow-list for post content, plus the elements and\nattributes the renderer needs. Script elements, event-handler attributes and script URLs\ncannot be stored. Every one of the 1304 compiled documents in our 24 templates passes\nthrough with nothing removed.<\/li>\n<li>Changed: the view counter's AJAX endpoint now rejects a request whose nonce is missing or\nexpired, where before it carried on. A nonce was never what limited the count - the\nendpoint is open to visitors, so every visitor has a valid one - so the endpoint now also\ncounts at most one view per visitor, per post, per day, decided on the server. The visitor\nis identified by a salted hash; no address is stored. On a site whose pages are cached for\nlonger than a nonce lives, the counter now under-reports instead of counting forged\nrequests.<\/li>\n<li>Changed: the stats setting is sanitised with WordPress's own boolean function rather than a\ncast, which reads values such as the string \"false\" correctly.<\/li>\n<li>Changed: internal code comments that described a feature as living in a separate plugin.\nThey were comments, never shown to anyone, but they described the plugin as something it is\nnot. Nothing in this plugin is locked, limited or behind a key.<\/li>\n<\/ul>\n\n<h4>1.37.3<\/h4>\n\n<ul>\n<li>Changed: wording of an internal code comment that described where template import used to\nlive. No change to behaviour.<\/li>\n<\/ul>\n\n<h4>1.37.1<\/h4>\n\n<ul>\n<li>Changed: the WooCommerce part of template import now uses WordPress's own file functions to\nmove and delete files, instead of PHP's. This code came from the companion theme in 1.35.0,\nwhere a different set of coding standards applies to it.<\/li>\n<li>Changed: several places that read submitted data now say, next to the line, which function\nsanitises it, so that an automated scan does not report them as unchecked.<\/li>\n<\/ul>\n\n<h4>1.37.0<\/h4>\n\n<ul>\n<li>Changed: the <strong>Raw HTML<\/strong> box on an Embed is no longer part of this plugin. WordPress.org does\nnot allow a plugin hosted there to let people save arbitrary HTML, CSS or JavaScript. An Embed\nstill takes a URL, which is what it is for; designs that already carry raw HTML keep rendering\nit, unchanged.<\/li>\n<li>Changed: markup returned by the <code>aumframe\/shortcode_html<\/code> filter is now passed through an\nallow-list before it is printed. Whoever answers that filter is a theme or another plugin,\nand this plugin is the one printing the result. The list is WordPress's own list for post\ncontent plus the form controls a search box needs.<\/li>\n<li>Fixed: the <code>prev<\/code> and <code>next<\/code> text of the pagination shortcode went into the page unescaped.<\/li>\n<\/ul>\n\n<h4>1.36.2<\/h4>\n\n<ul>\n<li>Fixed: a component's parameter list was treated as \"this component has parameters\" whenever it\nwas present, including when it was empty. An empty list can arrive as an empty array after the\ndesign has been saved, imported or exported, and that alone was enough to change how every\ninstance of the component was rendered - which is what made the previous two releases'\nproblem appear on a site where nobody had edited the component. The check now counts the\nparameters.<\/li>\n<li>Fixed: adding a parameter to a component whose parameter list had become an empty array was\ndiscarded when the design was saved. The parameter appeared in the editor and was gone after\na reload, with no error.<\/li>\n<\/ul>\n\n<h4>1.36.1<\/h4>\n\n<ul>\n<li>New: <code>wp aumframe doctor<\/code> now also reports designs whose rendered output has collapsed - the\ncase 1.36.0 fixed. Upgrading does not repair a page that was already saved wrongly: the\ndesign itself was never damaged, and rendering only happens when a design is saved, so each\naffected design has to be saved once in the editor. This tells you which ones.<\/li>\n<\/ul>\n\n<h4>1.36.0<\/h4>\n\n<ul>\n<li>Fixed: a component instance whose individual parts had been edited - a different heading and\nimage on each of four cards, for example - was saved as a plain reference to the component,\nand every one of those instances then rendered the component's own content instead. The page\nshowed the same card repeated. The edits were never lost from the design; only the rendered\npage was wrong, so re-saving the page in the editor is enough to correct it. Instances that\nonly set the component's parameters are unaffected and still share one copy, so a change to\nthe component still reaches every site.<\/li>\n<\/ul>\n\n<h4>1.35.0<\/h4>\n\n<ul>\n<li>New: a template's settings for AumViso, AumLang, WooCommerce, AumReserva and AumNexCart are\nnow applied by this plugin. They were previously applied by the AumCreate theme, so importing\na template on a site running any other theme left those settings unwritten and reported\nsuccess.<\/li>\n<li>Changed: this plugin's admin pages - Forms, Content Model - are always under its own Aumframe\nmenu. They previously moved under the AumCreate theme's menu when that theme was active.<\/li>\n<\/ul>\n\n<h4>1.34.2<\/h4>\n\n<ul>\n<li>Fixed: on a site served from a port other than the default - a local or staging install, for\ninstance - the check that runs after importing a template reported every one of the site's own\nimages as pointing somewhere else. It compared host names while the addresses carried a port.<\/li>\n<li>New: other plugins can add fields to the editor's panels. The designer screen takes over the\nwhole page and never reaches the usual asset hook, so there was no moment at which anything\nelse could add to it.<\/li>\n<\/ul>\n\n<h4>1.34.1<\/h4>\n\n<ul>\n<li>Changed: wording of an internal code comment. No change to behaviour.<\/li>\n<\/ul>\n\n<h4>1.34.0<\/h4>\n\n<ul>\n<li>New: Template packages now have their own screen under AumCreate, so a package can be imported\nor built without any other plugin or theme. It was already possible from WP-CLI; now it is in\nthe admin where it belongs.<\/li>\n<li>Changed: the Custom CSS boxes are no longer part of the editor. WordPress.org does not allow a\nplugin hosted there to let people save arbitrary CSS, and WordPress has an editor of its own\nfor it. Designs that already carry custom CSS are unaffected - it is still compiled and applied\nexactly as before. To write CSS of your own, use Appearance &gt; Customize &gt; Additional CSS; every\nelement in a design carries a stable class you can target.<\/li>\n<li>Fixed: a security check on the page-views metabox did not clean the submitted value before\nverifying it.<\/li>\n<li>Changed: the stylesheet and the two small scripts the plugin prints on the front end now go\nthrough WordPress's own enqueue functions instead of being written into the page directly.<\/li>\n<li>Changed: custom CSS stored in a design is now checked again at the moment it is printed, not\nonly when the editor saves it, so CSS that reached the database some other way cannot break out\nof the style element.<\/li>\n<li>Changed: translations are no longer bundled. They will be delivered through\ntranslate.wordpress.org instead.<\/li>\n<\/ul>\n\n<h4>1.33.2<\/h4>\n\n<ul>\n<li>Fixed: opening a design block to edit it showed an empty canvas. The block was being drawn\ninside the site header and footer, as though it were a page - and a header pinned to the top of\nthe window covered it completely, so a block shorter than the header had nowhere to appear. The\nlayer list showed everything was there, which made it look as though the block itself was empty.\nA design block is now shown on its own while you edit it.<\/li>\n<\/ul>\n\n<h4>1.33.1<\/h4>\n\n<ul>\n<li>Fixed: editing the site shell - the design that holds the header and footer - showed the footer\nunderneath the header instead of below it. The opening the page content goes into rendered as\nnothing at all while that design was open on its own, so a header that is pinned to the top of\nthe window had nothing to push the footer past. The opening is now drawn as a marked-out area,\nwhich also makes it visible where a page will be inserted. Only the editor changes; what\nvisitors see was never affected.<\/li>\n<\/ul>\n\n<h4>1.33.0<\/h4>\n\n<ul>\n<li>New: the desktop canvas width can be chosen - 1280, 1440 or 1920 pixels, with 1440 as the new\ndefault. The canvas has always shown a real browser width scaled to fit, but that width was fixed\nat 1280, so on a wider screen the crop of a full-width image in the canvas did not match what the\nsame page showed on the front end. Nothing about a design changes when you switch; only what you\nare looking at.<\/li>\n<li>New: <code>wp aumframe doctor<\/code> checks a site for two faults that do not announce themselves. Image\naddresses in layouts and design blocks that still point at the site a template was built on - the\nimages simply do not load, and nothing says why. And design blocks left behind by an earlier\ntemplate, which importing never removes, and which can show the wrong images in the editor while\nthe front end looks right.<\/li>\n<li>New: importing a template now runs both of those checks when it finishes, and reports what it\nfound. Both report the number of addresses and blocks they examined, not only the number of\nproblems, so \"nothing wrong\" can be told apart from \"nothing checked\".<\/li>\n<\/ul>\n\n<h4>1.32.5<\/h4>\n\n<ul>\n<li>Fixed: the three sha256 checksums published under \"Build\" did not match the files in the\npackage. Two of them had been left behind by an earlier release. Anyone rebuilding the editor to\ncheck them, which that section invites, would have found a mismatch.<\/li>\n<li>Changed: <code>package.json<\/code> now carries the same version as the plugin. It ships with the plugin\nbecause GPLv2 requires the scripts used to control compilation, so a wrong number in it is a\nwrong number in the package.<\/li>\n<li>Removed: a build-time constant that no source file referenced. The output is byte-identical\nwithout it.<\/li>\n<\/ul>\n\n<h4>1.32.4<\/h4>\n\n<ul>\n<li>Changed: the changelog in this file now carries only recent releases. wordpress.org truncates\nthat section at 5000 bytes without saying so, and this plugin's full history is far longer. All\nof it is kept in <code>changelog.txt<\/code> inside the plugin folder.<\/li>\n<\/ul>\n\n<h4>1.32.3<\/h4>\n\n<ul>\n<li>Changed: the filter that lists meta keys hidden from the content model is now named\n  aumframe\/ct_hidden_meta. It was <code>aumcreate\/ct_hidden_meta<\/code>, carrying the theme's prefix rather\nthan this plugin's. Nothing was listening to it.<\/li>\n<li>Changed: the cached interaction counts are stored as <code>_aumframe_like_count<\/code> and\n  _aumframe_favorite_count. The previous names, <code>_like_count<\/code> and <code>_favorite_count<\/code>, carried\nnothing identifying this plugin and could collide with any other plugin counting likes. The\nauthoritative counts live in the plugin's own table; this post meta is only a cache for list\nscreens, and nothing read the old keys at the time of the rename.<\/li>\n<\/ul>\n\n<h4>1.32.2<\/h4>\n\n<ul>\n<li>Fixed: a kit could report a required plugin as missing on a site where it was installed. The check\nread only this site's list of active plugins, so a plugin activated for a whole network, or\ninstalled as a must-use plugin, was not found. It now reads the network list as well, and the\nfallback used for must-use plugins covers every plugin the shipped kits require.<\/li>\n<\/ul>\n\n<h4>1.32.1<\/h4>\n\n<ul>\n<li>Fixed: a taxonomy whose identifier is longer than 20 characters was shortened on import, because the\n20-character limit WordPress applies to post types was being applied to taxonomies as well. WordPress\nallows 32 for a taxonomy. The shortened name then did not match the one the registering plugin uses,\nso the guard against re-registering an existing name did not recognise it and a second taxonomy was\nregistered under the same URL prefix. Its rewrite rules took precedence and pointed at a query\nvariable holding no terms, so every category archive returned 404 while both taxonomies appeared in\nthe admin, each with its own list of terms. Identifiers already stored are left unchanged.<\/li>\n<\/ul>","raw_excerpt":"A visual editor that designs templates, not pages: one layout drives every post, archive and search result it matches.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/390769","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=390769"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/aumcreate"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=390769"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=390769"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=390769"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=390769"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=390769"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=390769"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}