Phox Studio

Phox Studio is an all-in-one WordPress admin toolkit. From a single menu you can build custom post types, taxonomies, and fields; create standalone Content Types with their own database tables; link records together with a full relationship system; design options pages, admin pages, login screens, and roles; and surface everything inside the Breakdance builder.

Everything lives under one menu item in your WordPress dashboard called Phox Studio (look for the fox icon, near the top of the admin sidebar). Inside, features are grouped into dropdown tabs across the top: Content, Admin, Access, and Tools, plus a Dashboard and License tab.

Built for Breakdance. Phox Studio works alongside other page builders for many things, but it's designed first and foremost for Breakdance. Your custom fields, content types, options, and relationships all surface as Breakdance dynamic data, and Phox Studio ships its own Breakdance elements (under the Phox category) for displaying and editing that data. This documentation describes the Breakdance workflow throughout.

ContentPost Types, Taxonomies, Custom Fields, Content Types, Options Pages
AdminAdmin Pages, Menu Editor, Admin Styling, Cleanup
AccessLogin Page designer, User Roles editor
ToolsSpreadsheet editor, Import/Export, Settings

Getting Started

  1. From the WordPress dashboard, open Phox Studio in the left admin menu.
  2. The Dashboard tab gives you an overview and quick links to create your first post type, taxonomy, or field.
  3. Use the tab bar at the top to move between features. Tabs with a chevron (▾) open a dropdown of related screens.
  4. Most screens follow the same pattern: a list of what you've created on the left/top, and a form or panel to add or edit an item.

Tip. Changes save immediately when you click the save button on each screen; there's no separate "publish" step. After creating post types or taxonomies, your new items appear in the main WordPress admin menu right away.

Post Types

Post Types let you add new content types to WordPress alongside the built-in Posts and Pages, for example Projects, Team Members, Properties, or Events. Each post type gets its own menu item, editor, and archive.

Create a post type

  1. Go to Content → Post Types.
  2. Enter a Singular name (e.g. "Project") and a Plural name (e.g. "Projects").
  3. Set the Slug: the internal identifier used in URLs and the database. Keep it short, lowercase, and use hyphens. It must be 20 characters or fewer, or WordPress won't register it.
  4. Pick an icon and a menu position for where it appears in the admin sidebar.
  5. Choose the supports options (title, editor, featured image, excerpt, etc.) and visibility settings (Public, Show in REST API for the block editor, Has archive, Hierarchical).
  6. Click Save. The new post type appears in your admin menu immediately.

Avoid reserved slugs. Don't reuse a slug that WordPress or another plugin already uses (for example post, page, product, attachment). If a slug collides, the post type may not register correctly. Pick something specific to your site.

Taxonomies

Taxonomies are ways to group and filter content, like Categories and Tags, but your own. Examples: a Genre taxonomy for a Books post type, or a Region taxonomy for Properties.

  1. Go to Content → Taxonomies.
  2. Enter the singular and plural names and a slug (32 characters or fewer).
  3. Choose whether it's hierarchical (behaves like Categories, with parent/child terms) or flat (behaves like Tags).
  4. Select which post types the taxonomy should attach to. You can attach one taxonomy to several post types.
  5. Save. The taxonomy now appears under each attached post type's menu and inside its editor.

Custom Fields

Custom Fields add extra inputs to your content's edit screens, beyond the default title and body. You organise fields into Field Groups, then tell each group where to appear. Phox Studio includes more than 25 field types across eight categories.

The field types

Phox Studio groups its field types into eight categories. Here's what each one is for:

Field typeWhat it's for
Basic
TextA single line of plain text.
TextareaMultiple lines of plain text.
NumberA numeric value, with optional min/max/step.
EmailAn email address, validated as one.
URLA web address, validated as one.
PasswordA masked text input.
Content
WYSIWYG EditorA rich-text editor with formatting, like the classic post editor.
ImageA single image chosen from the media library.
VideoA video file or reference.
FileAny file (PDF, document, etc.) from the media library.
GalleryMultiple images managed as an ordered set.
oEmbedPaste a URL (YouTube, Vimeo, etc.) and it embeds automatically.
Choice
SelectA dropdown of predefined options.
CheckboxOne or more options that can be ticked.
Radio ButtonA set of options where only one can be chosen.
True / FalseA single on/off toggle.
Date & Time
Date PickerPick a calendar date.
Date & TimePick a date together with a time.
TimePick a time of day.
Advanced
Color PickerChoose a colour value.
Breakdance IconPick an icon from Breakdance's icon library (pairs with the Dynamic Icon element).
LinkA link with URL, label, and target, stored as one value.
RangeA slider that returns a number between a min and max.
Relational
Post ObjectSelect one or more posts/CPT entries and get the full post back.
Page LinkSelect a post/page and store just its URL.
RelationshipThe full relationship system, link to CCT items, posts, or users, with ordering and metadata. See Relationships.
UserSelect one or more WordPress users.
TaxonomySelect terms from a taxonomy (e.g. categories).
Location
Google MapPick a location on a map and store its address and coordinates.
Layout
Tab, Group, Repeater, Flexible ContentStructural fields that organise or repeat other fields, covered in Layout & Repeating Fields.

Create a field group

  1. Go to Content → Custom Fields and start a new field group. Give it a name (e.g. "Project Details").
  2. Add fields one at a time. For each field set a Label (what editors see), a Name/Key (the internal identifier used to display the value), and a Field Type.
  3. Fill in any type-specific options (for example, the choices for a Select field, or min/max for a Range field).
  4. Set the group's Location rules: these decide where the group appears (see below).
  5. Save the group.

Layout fields

The Tab, Group, Repeater, and Flexible Content types are structural: they organise or contain other fields rather than holding a single value. Because they behave quite differently from ordinary fields, they have their own section below: see Layout & Repeating Fields.

Location rules, where a group shows

Location rules control which edit screens display the field group. Rules use AND logic within a group of rules, and OR logic between rule groups. For example: "Post Type is Project" shows the group on all Projects. You can add a second rule group to also show it somewhere else.

Conditional logic, show fields only when relevant

Individual fields can be shown or hidden based on the value of another field in the same group. For example, show a "Discount %" field only when a "On Sale" True/False field is ticked. Set this in the field's conditional logic settings.

Displaying field values. Custom field values are fully available to the Breakdance builder as dynamic data, so you can place them anywhere on your templates. The field's Name/Key is what identifies the value.

Layout & Repeating Fields In depth

Four of the field types don't store a value of their own, instead they organise or contain other fields. They're what you reach for when content is repeating or modular rather than a simple list of single values. They can be used in ordinary Custom Field groups (on Post Types, Options Pages, etc.) and, in most cases, on Content Types too.

Tab

A Tab field splits a long field group into tabbed sections on the edit screen. It holds no data; it's purely for keeping the editing experience tidy. Add a Tab field and every field after it appears under that tab, until the next Tab field begins a new one. Use these when a group has grown long enough that editors have to scroll a lot.

Group

A Group bundles a fixed set of related fields together as one logical unit, for example a "Contact" group containing phone, email, and address fields. Unlike a Repeater, a Group does not repeat; it appears exactly once. Its purpose is organisation and clean data: the sub-fields are stored together under the group's name, which keeps related values grouped rather than scattered.

When building a Group you add sub-fields the same way you add normal fields, and each sub-field can be given a width (25%, 33%, 50%, 66%, 75%, or 100%) so you can lay them out in neat columns on the edit screen.

Repeater

A Repeater lets an editor add multiple rows of the same set of sub-fields. It's the right choice whenever a record needs a variable number of the same thing: a list of features, FAQ question/answer pairs, team members with a name and role, image-and-caption rows, and so on.

Building a Repeater

  1. Add a field and choose the Repeater type.
  2. Inside it, define the sub-fields that make up a single row (e.g. Title as Text, Image as Image, Link as Link).
  3. Give each sub-field a width if you want them arranged in columns within the row.
  4. Save the group. Editors will now see an "Add Row" button on the edit screen.

What editors can do with it

Available sub-field types

Sub-fields cover the common input types, Text, Textarea, Number, Email, URL, Select, Checkbox, Radio, True/False, Date, Image, Color, and WYSIWYG. (Sub-fields are single-value fields; you don't nest a repeater inside another repeater.)

No nested repeaters. A Repeater can't currently contain another Repeater (or a Flexible Content field) inside it. If you need two levels of repetition, model the inner list a different way, for example as a separate Content Type linked with a Relationship field.

Displaying a Repeater in Breakdance

Phox Studio registers each repeater with Breakdance's native Repeater Field element. To show the rows on the front end, add a Repeater element in Breakdance and choose your Phox repeater from its field dropdown, then design the layout for a single row. Breakdance repeats it for every row of data. Each sub-field is available as dynamic data inside that row.

Flexible Content

Flexible Content is the most powerful type. Instead of one fixed set of sub-fields, you define several named layouts (think of them as block types), and editors build up the content by adding, removing, and reordering instances of those layouts. It's ideal for modular page building, letting editors assemble a page from a kit of pre-designed sections without touching the builder.

How it's structured

Building a Flexible Content field

  1. Add a field and choose the Flexible Content type.
  2. Create your first layout, give it a clear label, and add the sub-fields it needs.
  3. Repeat to add as many layouts as you want editors to be able to choose from.
  4. Save. On the edit screen, editors get a button to add a row and pick which layout that row should be.

What editors can do with it

Editors add rows by choosing a layout, fill in that layout's fields, then add more rows of the same or different layouts. Rows can be reordered and collapsed, exactly like a Repeater, the difference is that each row can be a different type of block.

Displaying Flexible Content in Breakdance

Flexible Content has its own dedicated Breakdance element, Phox Flexible Content (under the Phox category). Drop it onto the template and point it at your flexible field; it renders each row using its layout, in the order the editor arranged them.

Repeater vs Flexible Content, which to use? Use a Repeater when every row is the same shape (e.g. a list of FAQs). Use Flexible Content when rows can be different shapes that an editor mixes and matches (e.g. a page built from hero, text, gallery, and CTA blocks).

Content Types (CCT)

Custom Content Types are Phox Studio's most distinctive feature. Unlike a Post Type (which stores data in WordPress's shared posts tables) a CCT gets its own dedicated database table. This makes CCTs fast and clean for large or structured datasets that aren't really "posts": bookings, inventory, directory listings, customer records, event registrations, and so on.

When to use a CCT vs a Post Type

Post TypeContent Type (CCT)
StorageShared WordPress posts/meta tablesIts own dedicated table
Best forEditorial content, anything needing SEO, comments, archivesStructured records, large datasets, app-like data
EditingEdited in Breakdance with dynamic data (custom fields, etc.)Also edited in Breakdance the same way; plus a dedicated item editor and spreadsheet view for managing records in bulk
Performance at scaleSlower as meta growsFast, one row per item, real columns

Create a Content Type

  1. Go to Content → Content Types and create a new type. Give it a name, plural name, slug, and menu icon.
  2. Add fields: these become real columns in the CCT's database table. Most of the same field types are available, including Relationship fields.
  3. Mark one field as the title field (the column used to label each item in lists and pickers). If you don't, Phox Studio falls back to the first text field, then the item ID.
  4. Save. The CCT gets its own menu item where you can add and manage items.

Managing CCT items

CCT records and Post Type content are both edited the same way in Breakdance using dynamic data, so your design and editing workflow stays consistent across the two. In addition, each CCT gets its own menu item in WordPress listing all of its records, where you can add and edit items in a dedicated item editor and (via the Tools tab) bulk-edit them in a spreadsheet view. Each item is one row in the table.

Displaying CCT items on the front end

Because CCT records live in their own database tables rather than WordPress's posts table, the standard Breakdance loop and query elements won't find them. To display CCT data you must use Phox Studio's dedicated Breakdance elements (found under the Phox category):

See the Breakdance Elements section for more. Individual CCT field values can still be placed anywhere as dynamic data, but anything that lists or loops CCT items needs one of these dedicated elements.

Heads up on deleting fields. Removing a field from a CCT stops it from being shown and edited, but the underlying column is left in place to protect existing data. This is normal, your data isn't lost.

Options Pages

Options Pages are admin screens for global, site-wide settings that aren't tied to any single post, think site-wide contact details, social links, header/footer content, or a global call-to-action. You build a page, attach a field group to it, and the values are available everywhere on your site.

  1. Go to Content → Options Pages and create a page. Set its title, menu slug, icon, and position (top-level menu or a sub-page of an existing menu).
  2. Create or assign a Custom Field group whose location targets this options page.
  3. Fill in the values on the options page and save.
  4. Reference the values anywhere on your site, including in Breakdance via dynamic data.

Relationships In depth

Relationships let you link records to other records and treat those links as real connections you can read from either direction. A Project can link to several Team Members; a Booking can link to a Customer and a Room; an Order can link to Products. Phox Studio's relationship system is built specifically for Content Types (CCTs) and is more capable than a plain "pick a post" field.

What makes it different

Instead of saving a simple comma-separated list of IDs into a field, Phox Studio stores every link as its own record in a dedicated relationships table. That design unlocks four things that a basic field can't do:

Setting up a relationship field

Relationship fields are added to a Content Type (or to a Custom Field group). When you add a field and choose the Relationship type, you'll see these options:

OptionWhat it does
Target TypeWhat this field can link to. Choices are: WordPress Posts (All), any individual post type, any of your Content Types (CCT), or WordPress Users.
Allow multiple selectionsOn by default. When on, the field can hold many related items; turn it off to restrict it to a single link.
Relationship Metadata Fields (optional)A comma-separated list of extra data keys to attach to each link, for example role, featured. Each related item then gets its own inputs for those keys.

Using it on an item

  1. Open a CCT item that has a relationship field.
  2. Use the search box in the field to find items of the target type, start typing and matching records appear.
  3. Click a result to add it as a related item. Repeat to add more (if multiple selections are allowed).
  4. Drag related items up or down to set their order.
  5. If you defined metadata fields, fill in those extra inputs on each related item (e.g. set a person's role to "Lead").
  6. Save the item. Links are saved into the relationships table.

Two-way / reverse lookups. You only ever set the relationship from one side. The connection is automatically visible from the other side too. For example, if each Project links to its Team Members, you can (on a Team Member's profile) automatically list every Project they're attached to, without adding a field to Team Members. This is what "two-way" means here.

What happens when items are deleted

Relationships are kept tidy automatically. If you delete a CCT item, every link to and from that item is removed in the background, so you won't be left with broken connections pointing at something that no longer exists.

Upgrading from older relationship data

Earlier versions stored relationships as simple comma-separated ID lists. The first time the new system runs, it automatically migrates that old data into the relationships table, your existing links are preserved, and you don't need to re-enter anything.

Displaying related items on the front end

Related items are available to the Breakdance builder, so in most cases you'll display them visually using Phox Studio's Breakdance elements (see Breakdance Elements, the Loop Builder is ideal for looping over related records). If your site uses custom templates, your developer can also pull relationships in code with helper functions such as phox_cct_get_related_items() (forward) and phox_cct_get_reverse_relationships() (reverse). Metadata you attached to each link comes back alongside the related item.

Admin Pages

The Admin Pages feature lets you turn a page you've designed in Breakdance into a real screen inside the WordPress admin. This is perfect for building custom dashboards, client portals, or branded internal tools that live in wp-admin.

  1. Design the page you want to show using Breakdance, as a normal page.
  2. Go to Admin → Admin Pages and create an entry. Give it a name and choose the Breakdance page to display.
  3. Choose whether it's a top-level admin menu item or a sub-page under an existing menu, and set its icon, position, and required permission level.
  4. Save. The page now appears in the admin menu and renders your Breakdance design inside the dashboard.

The Menu Editor lets you reorganise the WordPress admin sidebar, reorder menu items, customise them, and hide items. Visibility can be set per role (or globally for all roles), so you can tailor exactly what each type of user sees when they log in. Use it to declutter the dashboard or simplify the experience for clients.

Admin Styling

Admin Styling lets you brand the WordPress admin area, adjust colours and visual styling so the dashboard matches your site or your agency's branding rather than the default WordPress look.

Cleanup

The Cleanup screen helps you tidy the WordPress admin and front end by toggling off elements you don't need, reducing clutter and distractions for you and your clients.

Login Page

The Login Page designer customises the WordPress login screen (your logo, background, colours, and styling) so the first screen users see is branded to your site instead of the default WordPress login.

  1. Go to Access → Login Page.
  2. Set your logo, background, and colour options.
  3. Save, then visit your site's /wp-login.php in a private browser window to preview the result.

User Roles

The User Roles editor lets you manage WordPress roles and their capabilities, create new roles, and control exactly what each role can and can't do. It pairs well with Post Types and Admin Pages so you can give specific roles access to specific areas.

Spreadsheet Editor

The Spreadsheet Editor gives you a grid view for bulk-editing data, especially CCT items. Instead of opening each record one at a time, you edit many rows and columns together, much like a spreadsheet. It's the fastest way to clean up or mass-update structured data.

  1. Go to Tools → Spreadsheet and choose the data set you want to edit.
  2. Edit cells directly in the grid.
  3. Save your changes, they're written straight back to the records.

Import / Export

The Import/Export screen (under Tools) lets you move your configuration and data between sites, useful when setting up a new site from an existing one, or keeping multiple sites in sync. Export from one site, then import the file on another.

Breakdance Elements

Phox Studio adds its own elements to the Breakdance builder (look under the Phox category) so you can display your custom data visually, with no code. These are required for working with CCT items, since CCTs aren't standard WordPress posts, Breakdance's built-in loop, query, and post-list elements can't display them, so you use the Phox equivalents instead. The main elements are:

ElementWhat it's for
Data Table (CCT Table)Shows CCT items (or posts) in a sortable, columned table, great for directories and admin-style listings.
CCT Loop BuilderLoops over CCT items (including related items from a relationship field) so you can design a repeating card/list layout.
CCT Filter BarAdds front-end filters so visitors can narrow a list of CCT items by field values.
Dynamic IconOutputs an icon from a Breakdance Icon field, so icons stored in your data render on the page.
Phox Flexible ContentRenders the blocks built with a Flexible Content field, so editors' modular layouts display on the front end.

For relationships specifically: use the CCT Loop Builder pointed at a relationship field to display a record's related items (and any metadata you attached, like role or featured status).

Create Post (CPT) Form Action

Phox Studio adds a Create Post action to Breakdance Forms. It lets a front-end form submission create a real WordPress post or custom post type entry, perfect for user-submitted listings, contact-to-CRM records, applications, or any "submit and store" workflow, without writing code.

  1. Build a form in Breakdance as usual.
  2. In the form's Actions After Submit, add the Create Post action (provided by Phox Studio).
  3. Choose the Post Type the submission should create, and the default Post Status (Draft, Pending Review, Published, or Private).
  4. Use Field Mapping to connect each form field to a destination, Post Title, Post Content, Post Excerpt, Author, a custom field, or a taxonomy.
  5. Save. New submissions now create entries automatically.

Built-in safeguards. The action includes security controls and rate limiting to help prevent spam and abuse from public forms. Setting the default status to Draft or Pending Review lets you approve submissions before they go live.

Clone in Builder

Clone in Builder adds a duplicate button to the Breakdance builder's document switcher, so you can clone a page or template without leaving the builder. It's a small but big time-saver when you're iterating on designs or spinning up variations of a layout.

The feature is on by default and can be turned off in Phox Studio's settings if you don't want it.

Builder Grid Overlay

The Builder Grid Overlay puts a configurable alignment grid on the Breakdance builder canvas to help you line elements up precisely while designing. It's a design aid only, the grid is visible inside the builder and is never rendered on the live front end. You configure it from Breakdance's Global Settings.

Command Palette

The Command Palette is a fast search-and-jump tool for getting around. Press Ctrl/Cmd + K anywhere in the admin (or use the button in the admin bar) to open it, start typing, and jump straight to a Phox Studio screen or quick action without hunting through menus.

REST API Developers

Your data can be read and written over the WordPress REST API, which is useful for headless front ends, integrations, and automations.

Post Types

When you tick Show in REST while creating a post type, it's exposed through the standard WordPress REST API at /wp-json/wp/v2/<slug> (this also enables the block editor for it).

Content Types (CCT)

CCTs have their own dedicated REST endpoints, which you switch on per CCT with its Enable REST API option. Once enabled, each CCT exposes:

MethodEndpointAction
GET/wp-json/phox-cct/v1/<slug>List items
POST/wp-json/phox-cct/v1/<slug>Create an item
GET/wp-json/phox-cct/v1/<slug>/<id>Get a single item
PUT / PATCH/wp-json/phox-cct/v1/<slug>/<id>Update an item
DELETE/wp-json/phox-cct/v1/<slug>/<id>Delete an item

Read access can be configured per CCT, while creating, updating, and deleting require the capability set on that Content Type, so write operations need an authenticated request from a user with permission.

GraphQL Developers

Phox Studio integrates with the WPGraphQL plugin for Post Types. When creating a post type, tick Show in WPGraphQL and the post type is added to your GraphQL schema, with query names generated from its singular and plural names. You can then query its entries (including their custom fields) through your GraphQL endpoint.

Note. GraphQL support applies to Post Types. To work with Content Type (CCT) data programmatically, use the CCT REST API described above.

License & Settings

The License tab is where you enter and activate your license key to receive updates. A green check (✓) next to the tab means your license is valid. The Settings tab (under Tools) holds plugi