{"id":368551,"date":"2026-10-06T18:05:50","date_gmt":"2026-10-06T18:05:50","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/vx-framework\/"},"modified":"2026-10-06T18:05:27","modified_gmt":"2026-10-06T18:05:27","slug":"vx-framework","status":"publish","type":"plugin","link":"https:\/\/bal.wordpress.org\/plugins\/vx-framework\/","author":23558043,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.3","requires":"6.9","requires_php":"8.1","requires_plugins":null,"header_name":"VX Framework","header_author":"27collective","header_description":"The data modeling layer for agentic WordPress.","assets_banners_color":"f6f6f6","last_updated":"2026-10-06 18:05:27","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/vxframework.com\/","header_author_uri":"https:\/\/27collective.net","rating":5,"author_block_rating":0,"active_installs":0,"downloads":180,"num_ratings":2,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"vxframework","date":"2026-10-06 18:05:27","revision":3731346}},"upgrade_notice":{"1.0.0":"<p>Initial release of VX Framework.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":2},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3731347,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3731347,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3731347,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3731603,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3731603,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[2353,2010,1487,219474,242115],"plugin_category":[],"plugin_contributors":[284764],"plugin_business_model":[],"class_list":["post-368551","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-custom-fields","plugin_tags-custom-post-types","plugin_tags-dynamic-data","plugin_tags-mcp","plugin_contributors-vxframework","plugin_committers-vxframework"],"banners":{"banner":"https:\/\/ps.w.org\/vx-framework\/assets\/banner-772x250.png?rev=3731603","banner_2x":"https:\/\/ps.w.org\/vx-framework\/assets\/banner-1544x500.png?rev=3731603","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/vx-framework\/assets\/icon.svg?rev=3731347","icon":"https:\/\/ps.w.org\/vx-framework\/assets\/icon.svg?rev=3731347","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>VX Framework is the data model layer for WordPress. You describe the\nstructures your site needs. The framework supplies the editing interface,\nthe storage, and the validation.<\/p>\n\n<p>Create fieldsets in the UI, in PHP, as JSON, or through an AI\nassistant. Assign them to posts, terms, or users. Bind the values into\nthe block editor. The same typed model is what your theme and your\nagents read.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Fieldsets with Locations, conditional logic, and revisions<\/li>\n<li>38 field types, including the Repeater field<\/li>\n<li>Custom post types and taxonomies<\/li>\n<li>Dynamic data for the block editor with VX Script<\/li>\n<li>AI-ready: MCP, WordPress abilities, and WP-CLI<\/li>\n<li>Config as code: PHP and JSON<\/li>\n<li>Bricks Builder integration<\/li>\n<li>Built-in documentation<\/li>\n<\/ul>\n\n<p>Site: <a href=\"https:\/\/vxframework.com\/\">vxframework.com<\/a>\nDocs: <a href=\"https:\/\/docs.vxframework.com\/\">docs.vxframework.com<\/a><\/p>\n\n<h4>Create fieldsets. Assign them anywhere.<\/h4>\n\n<p>A fieldset is a named group of fields - the building block of your\ncontent model. You design it once and reuse it.<\/p>\n\n<p><strong>Locations<\/strong> decide where it appears: a post type (including ones you\ndid not register), a taxonomy, or a user profile, optionally limited by\nrole. Conditional logic, revisions, and import\/export live in the same\neditor.<\/p>\n\n<p>Create the fieldset visually, describe it to an assistant over MCP, or\ndefine it in Local JSON or PHP and keep it in version control.<\/p>\n\n<h4>Field types for any model<\/h4>\n\n<p>From text and media to nested fields. Every field is typed, reusable,\nand ready for the block editor and your theme.<\/p>\n\n<ul>\n<li><strong>Input<\/strong> - Text, Textarea, Rich text, Number, Stepper, Email,\nURL, Phone, Password, Color, List, Slider, Range slider, Code<\/li>\n<li><strong>Choice<\/strong> - Select, Multiselect, Checkboxes, Radio Buttons,\nButton Group, Switcher<\/li>\n<li><strong>Dates<\/strong> - Date, Date range, Time, Date &amp; Time<\/li>\n<li><strong>Media<\/strong> - Image, Gallery, SVG, Video, Audio<\/li>\n<li><strong>Relational<\/strong> - Taxonomy, Select Post, Select User<\/li>\n<li><strong>Composite<\/strong> - Group, Repeater<\/li>\n<li><strong>Layout<\/strong> - UI Heading, UI Spacer, UI Notice, UI HTML<\/li>\n<\/ul>\n\n<h4>One model, any front-end<\/h4>\n\n<p>Use VX with the block editor, Bricks, or a custom\ntheme. In templates, PHP helpers and hooks read typed field values.\nThe model does not change when the front-end does.<\/p>\n\n<h4>Config as code<\/h4>\n\n<p>Register post types, taxonomies, and fieldsets as JSON or PHP in your\ntheme or plugin, and keep your model in version control. Edits made\nin the dashboard can be synced back to the files. The files describe\nstructure only, never content, so they move safely between\ndevelopment, staging, and production.<\/p>\n\n<h4>Dynamic data for the block editor and page builders<\/h4>\n\n<p>Model with VX, build with the block editor.<\/p>\n\n<p>Bind any field to any block with VX tags on the Block Bindings API.\nShape values with <strong>VX Script<\/strong> - tags, modifiers, and chainable\nexpressions. Loop a repeater or a gallery so each row renders as its\nown block. Show or hide any block with visibility rules: user, content,\nrequest, time, or a VX Script expression.<\/p>\n\n<p>Building with Bricks instead? The same fields\nappear in the builder's dynamic data picker and query loops.<\/p>\n\n<h4>Content editing that feels native<\/h4>\n\n<p>Navigate fieldsets from a collapsible sidebar. Edit on the canvas or in\nform view. Everything stays in sync.<\/p>\n\n<h4>Agentic WordPress, out of the box<\/h4>\n\n<p>A typed data model agents can read and write through MCP and WordPress\nabilities. The same catalog is available\nfrom WP-CLI. The MCP endpoint stays off until you enable it. Reading and\nwriting are separate permissions - you grant each one yourself.<\/p>\n\n<h4>VX Framework Pro<\/h4>\n\n<p>VX Framework Pro is a separate plugin, available through <a href=\"https:\/\/vxframework.com\/\">vxframework.com<\/a>.<\/p>\n\n<p>Same model, more field types and modules.<\/p>\n\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=z7I0jxV4Dn0&amp;rel=0\">https:\/\/www.youtube.com\/watch?v=z7I0jxV4Dn0&amp;rel=0<\/a><\/p>\n\n<ul>\n<li><strong>Fields<\/strong> - Markdown, Files, Clone, Post Relation, User Relation, Recurring Date, Field Table, Content Sections, Location, Area<\/li>\n<li><strong>Option Pages<\/strong> - site-wide settings screens built from fieldsets<\/li>\n<li><strong>Dictionaries<\/strong> - shared choice lists, plus built-in lists of countries, currencies and units<\/li>\n<li><strong>REST API<\/strong> - typed, access-controlled field values for apps and headless front ends<\/li>\n<li><strong>Shader<\/strong> - a local development tool for building WordPress themes with AI and one-click deploy.<\/li>\n<li><strong>Premium support<\/strong> - direct support from the VX team<\/li>\n<\/ul>\n\n<p>Get VX Framework Pro at <a href=\"https:\/\/vxframework.com\/pro\/\">vxframework.com<\/a>.<\/p>\n\n<h4>Tools<\/h4>\n\n<p>System information, Meta Watch, field key conflict detection, and\nimport\/export.<\/p>\n\n<h4>Documentation<\/h4>\n\n<p>The user guide and the developer documentation ship inside the plugin\nand are read from the dashboard. They cover what is in this package,\nand they match the version installed on the site, with no connection\nrequired. The same documentation is also online at\n<a href=\"https:\/\/docs.vxframework.com\/\">docs.vxframework.com<\/a>.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin does not connect to any external service. Its fonts and other\nassets are served from the plugin itself. The admin links to two websites,\nboth from cards under Settings: vxframework.com from the VX Framework Pro\ncard, and getshader.com from the Shader card. Neither link opens unless\nclicked.<\/p>\n\n<h3>Source code<\/h3>\n\n<p>The admin interface is a compiled Vue application. The complete, unminified\nsource it was built from ships in this package in <code>client\/src<\/code>, together with\nthe <code>package.json<\/code>, <code>package-lock.json<\/code> and <code>vite.config.js<\/code> that build it.\nRunning<\/p>\n\n<pre><code>cd client &amp;&amp; npm install &amp;&amp; npm run build\n<\/code><\/pre>\n\n<p>rebuilds <code>client\/dist<\/code> from those sources, with the configuration exactly as it\nships - the same entry points and the same chunks, from the same dependency\nversions the lockfile pins. Nothing in the package is obfuscated.<\/p>\n\n<p>The PHP libraries in <code>app\/vendor<\/code> ship as readable source under their own\nlicences, each one named with its version and its licence file in\n    LICENSE-THIRD-PARTY.txt.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install through Plugins \u2192 Add New, or upload the folder to\n   \/wp-content\/plugins\/vx-framework.<\/li>\n<li>Activate the plugin through the Plugins screen.<\/li>\n<li>Open <strong>VX<\/strong> in the admin menu and create your first fieldset.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20work%20with%20the%20block%20editor%3F\"><h3>Does it work with the block editor?<\/h3><\/dt>\n<dd><p>Yes. Field values are available as dynamic data inside the block\neditor. You can bind them to blocks, loop them, and drive visibility\nfrom the same model.<\/p><\/dd>\n<dt id=\"can%20an%20ai%20assistant%20work%20with%20my%20model%3F\"><h3>Can an AI assistant work with my model?<\/h3><\/dt>\n<dd><p>Yes. VX registers its operations as WordPress abilities and can serve\nthem over MCP. The endpoint stays off until you enable it.<\/p><\/dd>\n<dt id=\"can%20i%20define%20the%20model%20in%20code%3F\"><h3>Can I define the model in code?<\/h3><\/dt>\n<dd><p>Yes. Register fieldsets, post types, and taxonomies in PHP or JSON\nin your theme or plugin. The dashboard stays usable for everything\nthat is not in code.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20bricks%20builder%3F\"><h3>Does it work with Bricks Builder?<\/h3><\/dt>\n<dd><p>Yes. When Bricks Builder is active, VX fields appear in its dynamic data\npicker.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"The data modeling layer for agentic WordPress. Model your content once - use it in the block editor, any builder, headless, or with AI.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/368551","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=368551"}],"author":[{"embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/vxframework"}],"wp:attachment":[{"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=368551"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=368551"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=368551"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=368551"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=368551"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/bal.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=368551"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}