Bricks dynamic tags
VX fields appear in the Bricks dynamic data picker in groups named after their fieldsets:
| Group | Reads from | Example tag |
|---|---|---|
| Post: … | The current post | {vx_tagline} |
| Author: … | The post's author | {vx_author_phone} |
| User: … | The logged-in visitor | {vx_user_phone} |
| Term: … | The current term | {vx_term_hours} |
| Option page: … | An option page | {vx_site_site_settings_phone} |
Fields inside a Group or Repeater show a breadcrumb in the picker ("Team › Name") and use underscores in the tag: {vx_team_name}.
Images and other media
One tag covers an image. What it outputs depends on where you use it:
| Used in | Outputs |
|---|---|
| An Image element | The attachment ID, so Bricks can load the right size |
| Text or a link | The image URL |
Add a part after a colon to choose: {vx_logo:url}, {vx_logo:id}, {vx_logo:alt}, {vx_logo:title}, {vx_logo:caption}, or, for audio, :duration.
A Gallery tag on an Image Gallery or Carousel element returns all the images, so no loop is needed. A Files tag behaves the same way.
Choices
A Select, Radio Buttons or Button Group tag outputs the label ("United Kingdom"). Add :value for the stored value (uk).
Checkboxes and Multiselect behave like lists. The plain tag is the first selected label; :list joins them all.
| Tag | Result |
|---|---|
{vx_amenities} | First label: Wi-Fi |
{vx_amenities:list} | Wi-Fi, Parking, Terrace |
{vx_amenities:value:list} | wifi, parking, terrace |
Lists without a loop
A repeater's sub-field used as plain text is the first row. To use every row, join them or pick one:
| Tag | Result |
|---|---|
{vx_team_name} | Ana |
{vx_team_name:list} | Ana, Bruno, Carla |
{vx_team_name:list|, | and } | Ana, Bruno and Carla |
{vx_team_name:count} | 3 |
{vx_team_name:array_value|1} | Bruno (counting from 0) |
For a card per row, use a query loop. A relation tag in a link is the first related item's URL.
Filters
VX filters go after a colon and run left to right. Arguments are separated with |. Bricks' own filters, such as :plain, :link, a word limit like :20, and @fallback, still work and run after the VX ones.
| Example | Does |
|---|---|
{vx_price:number_format|2} | 2 decimals |
{vx_price:currency_format|EUR} | Formats as euros |
{vx_reviews:pluralize|review|reviews} | "1 review" or "4 reviews" |
{vx_opens:date_format|l, j F} | Formats a date |
{vx_tagline:truncate|80} | Shortens to 80 characters |
{vx_tagline:fallback|Coming soon} | Text when the field is empty |
{vx_logo@fallback-image:123} | Bricks image fallback (attachment 123) |
Filters can be chained: {vx_logo:url:link}, {vx_price:number_format|2:append| EUR}.
Bricks doesn't support the block editor's #math, then()/else() conditions or loop position modifiers. For conditional display, use Bricks conditions.
Technical details for LLMs
- Tag name:
vx_+ path with_separators for the post group;vx_<group>_…forauthor,user,term,site. Picker groups:<Group>: <fieldset label>. - Option page tags:
vx_site_<page_key>_<field_key>. - VX filters:
append,prepend,trim,uppercase,lowercase,capitalize,truncate,truncate_words,replace,slugify,strip_tags,fallback,list,count,first,last,nth,shuffle,number_format,currency_format,round,clamp,ordinal,abbreviate,pluralize,date_format,date_modify,to_age,time_diff. Same semantics as the block editor modifiers; arguments are|-separated. - Not available in Bricks:
loop_index,is_first,is_last, conditionals,let,#math,#query_var. :valueon choices,:array_value|n,:plain,:link, numeric word limits and@fallback…are Bricks' own filters.- Media sub-keys:
id,url,alt(images),title,caption,duration(audio). Element context decides the bare tag's output (ID in image elements, URL elsewhere).