Skip to content
themeforge
EN
Start free
Menu
Core attributes

Start with a task

These 40 cards cover a typical site: what to put where, what the client sees in the admin, and the mistakes the build catches. Below them, every attribute.

Or start from a whole section: hero, FAQ, prices, header →

373 attributes

Custom Fields

Fields (fld-, opt-, tax-)

Prefix scopes

A single field type can apply to 4 different entities. Only the prefix changes — the value syntax and behavior stay the same.

fld-*Post field

value belongs to a specific post, page, or CPT entry

fld-text="field_name"Alternative: f_text="field_name"
opt-*Options

site-wide asset — logo, contacts, favicon

opt-text="field_name"Alternative: o_text="field_name"
tax-*Taxonomy field

value belongs to a term (category, tag, custom taxonomy)

tax-text="field_name"Alternative: t_text="field_name"

Every field type works in every scope — both as a direct scoped attribute (fld-text / opt-text / tax-text; alternative f_text / o_text / t_text) and by placing a plain fld-* field inside a scope container (opt-group / tax-group / fld-loop), where it resolves to that scope automatically.

fld-alt="field_name"Alternative: f_alt="field_name"
text

Writes the value into the alt attribute of an img tag — the image description for accessibility and SEO. Polylang/WPML-aware.

img (alt)
ScopeAttributeAlternative
Post fieldfld-altf_alt
Optionsopt-alto_alt
Taxonomy fieldtax-altt_alt
fld-anchor="field_name"Alternative: f_anchor="field_name"
text

Anchor link — the field accepts an identifier without the # sign; the generator prepends the hash when writing into href.

a (href), any (#id)
ScopeAttributeAlternative
Post fieldfld-anchorf_anchor
Optionsopt-anchoro_anchor
Taxonomy fieldtax-anchort_anchor
fld-area="field_name"Alternative: f_area="field_name"
textarea

Multi-line plain-text field without a visual editor: line breaks typed in the admin become line breaks on the site. For leads, addresses and short descriptions.

div (textarea alias)
ScopeAttributeAlternative
Post fieldfld-areaf_area
Optionsopt-areao_area
Taxonomy fieldtax-areat_area
fld-auto-id="field_name"Alternative: f_auto_id="field_name"
text

Generates a unique HTML id from the value of a linked ACF/SCF field. Useful when repeater rows render in sequence and need stable ids for anchors or CSS.

any (auto id)
ScopeAttributeAlternative
Post fieldfld-auto-idf_auto_id
Optionsopt-auto-ido_auto_id
Taxonomy fieldtax-auto-idt_auto_id
fld-bg-color="field_name"Alternative: f_bg_color="field_name"
color_picker

Background color — writes the value into the inline background-color style. Color-picker in admin.

div (background-color)
ScopeAttributeAlternative
Post fieldfld-bg-colorf_bg_color
Optionsopt-bg-coloro_bg_color
Taxonomy fieldtax-bg-colort_bg_color
fld-bg-image="field_name"Alternative: f_bg_image="field_name"
image

Block background image — the generator writes the URL into the inline background-image style. If the block also has a background color or gradient, the image may not render in some browsers.

div (background-image)
ScopeAttributeAlternative
Post fieldfld-bg-imagef_bg_image
Optionsopt-bg-imageo_bg_image
Taxonomy fieldtax-bg-imaget_bg_image
fld-bg-video="field_name"Alternative: f_bg_video="field_name"
group

HTML5 background video — a group of three fields: poster placeholder, mp4, and webm. The generator attaches a <video> with autoplay/muted/loop to the block background.

div (video background)
ScopeAttributeAlternative
Post fieldfld-bg-videof_bg_video
Optionsopt-bg-videoo_bg_video
Taxonomy fieldtax-bg-videot_bg_video
fld-checkbox="field_name"Alternative: f_checkbox="field_name"
text

Binds an input[type=checkbox] state to a boolean ACF/SCF field. The generator adds the checked attribute when the value is true.

input (checked)
ScopeAttributeAlternative
Post fieldfld-checkboxf_checkbox
Optionsopt-checkboxo_checkbox
Taxonomy fieldtax-checkboxt_checkbox
fld-checkbox-custom="field_name"Alternative: f_checkbox_custom="field_name"
text

Custom checkbox inside fld-loop — every row gets a unique name, so form submission returns an array of values.

input (custom checked)
ScopeAttributeAlternative
Post fieldfld-checkbox-customf_checkbox_custom
Optionsopt-checkbox-customo_checkbox_custom
Taxonomy fieldtax-checkbox-customt_checkbox_custom
fld-class="field_name"Alternative: f_class="field_name"
text

Writes the value into the HTML class attribute. Useful for conditional styling: pick a string in admin (e.g. is-featured) and it becomes a block class on the front.

any (CSS class)
ScopeAttributeAlternative
Post fieldfld-classf_class
Optionsopt-classo_class
Taxonomy fieldtax-classt_class
fld-code="field_name"Alternative: f_code="field_name"
acf_code_field

Arbitrary code snippet — the value is printed verbatim, no escaping (raw output). Use for tracking pixels, third-party iframe widgets, inline styles.

any (data attr)
ScopeAttributeAlternative
Post fieldfld-codef_code
Optionsopt-codeo_code
Taxonomy fieldtax-codet_code
fld-color="field_name"Alternative: f_color="field_name"
color_picker

Text color — writes the value into the inline color style of the current element. The admin shows a color-picker with alpha.

span, div
ScopeAttributeAlternative
Post fieldfld-colorf_color
Optionsopt-coloro_color
Taxonomy fieldtax-colort_color
fld-custom="field_name"Alternative: f_custom="field_name"
text

Arbitrary custom attribute: exposes any HTML attribute of the element to the admin as an editable field. Value format: "attr-name:Label in admin". For example, to make src or href editable: fld-custom="src:Image link" or fld-custom="href:Link field name". Need several on one element — use the numbered variants fld-custom1...fld-custom20.

any (custom PHP)
ScopeAttributeAlternative
Post fieldfld-customf_custom
Optionsopt-customo_custom
Taxonomy fieldtax-customt_custom
fld-editor="field_name"Alternative: f_editor="field_name"
wysiwyg

Visual editor (TinyMCE) for formatted text: headings, lists, links, images. Put it on a div: WordPress wraps the text in paragraphs itself.

div (wysiwyg alias)
ScopeAttributeAlternative
Post fieldfld-editorf_editor
Optionsopt-editoro_editor
Taxonomy fieldtax-editort_editor
fld-email-link="field_name"Alternative: f_email_link="field_name"
text

Email link in one attribute — the generator builds href="mailto:..." and injects the address from the field as the visible link text inside <a>.

a (mailto: + text)
ScopeAttributeAlternative
Post fieldfld-email-linkf_email_link
Optionsopt-email-linko_email_link
Taxonomy fieldtax-email-linkt_email_link
fld-file="field_name"Alternative: f_file="field_name"
file

Arbitrary file upload — PDF, DOCX, ZIP, etc. The URL is injected into the href of an <a>. Standard media uploader in admin.

a (href)
ScopeAttributeAlternative
Post fieldfld-filef_file
Optionsopt-fileo_file
Taxonomy fieldtax-filet_file
fld-gallery="field_name"Alternative: f_gallery="field_name"
gallery

Image gallery — an array of images with drag-and-drop ordering. Rendered on the front as a loop over images.

wrapper div (image list)
ScopeAttributeAlternative
Post fieldfld-galleryf_gallery
Optionsopt-galleryo_gallery
Taxonomy fieldtax-galleryt_gallery
fld-gmap="field_name"Alternative: f_gmap="field_name"
google_map

Google Maps field — coordinates, address, and zoom in one picker with an interactive map. Requires a Google Maps API key in Theme Settings.

div (Google Map)
ScopeAttributeAlternative
Post fieldfld-gmapf_gmap
Optionsopt-gmapo_gmap
Taxonomy fieldtax-gmapt_gmap
fld-gmap-addr="field_name"Alternative: f_gmap_addr="field_name"
text

Textual address from a Google Map — extracts the address component from the gmap object. Useful for a caption under the map.

span, div (address)
ScopeAttributeAlternative
Post fieldfld-gmap-addrf_gmap_addr
Optionsopt-gmap-addro_gmap_addr
Taxonomy fieldtax-gmap-addrt_gmap_addr
fld-group="field_name"Alternative: f_group="field_name"
group

Container of nested fields — all fld-* inside become sub-fields of the group in admin. No own value, just structures the Theme Panel.

wrapper div
ScopeAttributeAlternative
Post fieldfld-groupf_group
Optionsopt-groupo_group
Taxonomy fieldtax-groupt_group
fld-hide="field_name"Alternative: f_hide="field_name"
true_false

Conditional block hide — mirror of show with inverted logic. true in admin removes the block from the markup.

wrapper div (conditional)
ScopeAttributeAlternative
Post fieldfld-hidef_hide
Optionsopt-hideo_hide
Taxonomy fieldtax-hidet_hide
fld-id="field_name"Alternative: f_id="field_name"
text

Writes the value into the HTML id of the current element. For auto-generation from content, see auto_id or slug_id.

any (id)
ScopeAttributeAlternative
Post fieldfld-idf_id
Optionsopt-ido_id
Taxonomy fieldtax-idt_id
fld-image="field_name"Alternative: f_image="field_name"
image

Image field. On an <img> the build takes src from the field and removes srcset and sizes, so the image chosen in the admin is the one shown; alt and class stay as in the markup.

img (src)
ScopeAttributeAlternative
Post fieldfld-imagef_image
Optionsopt-imageo_image
Taxonomy fieldtax-imaget_image
fld-image-gallery="field_name"Alternative: f_image_gallery="field_name"
gallery

Gallery without automatic lightbox wrapping — use it when your modal viewer is wired through a custom JS component.

wrapper div (gallery alias)
ScopeAttributeAlternative
Post fieldfld-image-galleryf_image_gallery
Optionsopt-image-galleryo_image_gallery
Taxonomy fieldtax-image-galleryt_image_gallery
fld-layout="field_name"Alternative: f_layout="field_name"
text

A single block template inside fld-layouts — contains the elements rendered for a specific layout variant.

section div (layout item)
ScopeAttributeAlternative
Post fieldfld-layoutf_layout
Optionsopt-layouto_layout
Taxonomy fieldtax-layoutt_layout
fld-layouts="field_name"Alternative: f_layouts="field_name"
flexible_content

Flexible Content — the user picks different block types in admin and arranges them in arbitrary order. Each block type is a separate fld-layout with its own markup.

wrapper div (flexible content)
ScopeAttributeAlternative
Post fieldfld-layoutsf_layouts
Optionsopt-layoutso_layouts
Taxonomy fieldtax-layoutst_layouts
fld-lbox-gallery="field_name"Alternative: f_lbox_gallery="field_name"
gallery

Gallery in a lightbox — each image is automatically wrapped in an <a> with lightbox attributes for the chosen widget.

wrapper div (lightbox gallery)
ScopeAttributeAlternative
Post fieldfld-lbox-galleryf_lbox_gallery
Optionsopt-lbox-galleryo_lbox_gallery
Taxonomy fieldtax-lbox-galleryt_lbox_gallery
fld-lbox-image="field_name"Alternative: f_lbox_image="field_name"
image

Lightbox image — the generator wraps the <img> in an <a href> pointing to the full size with attributes that trigger a modal viewer (Fancybox, GLightbox, native).

a (lightbox; group → Group name: loop_id/parent_id/post_id)
ScopeAttributeAlternative
Post fieldfld-lbox-imagef_lbox_image
Optionsopt-lbox-imageo_lbox_image
Taxonomy fieldtax-lbox-imaget_lbox_image
fld-lbox-video="field_name"Alternative: f_lbox_video="field_name"
text

Lightbox video — the field accepts a URL (YouTube, Vimeo, MP4) and turns into a lightbox link with on-click embed.

a (lightbox; group → Group name: loop_id/parent_id/post_id)
ScopeAttributeAlternative
Post fieldfld-lbox-videof_lbox_video
Optionsopt-lbox-videoo_lbox_video
Taxonomy fieldtax-lbox-videot_lbox_video
fld-link="field_name"Alternative: f_link="field_name"
text

Universal link as a plain-text field — user enters a URL, the generator writes it into href. No post picker, no scheme validation.

a (href)
ScopeAttributeAlternative
Post fieldfld-linkf_link
Optionsopt-linko_link
Taxonomy fieldtax-linkt_link
fld-list="field_name"Alternative: f_list="field_name"
textarea

List of values via textarea — each line becomes an array element. Good for benefits, tags, simple enumerations without a full repeater.

ul/ol (list items)
ScopeAttributeAlternative
Post fieldfld-listf_list
Optionsopt-listo_list
Taxonomy fieldtax-listt_list
fld-loop="field_name"Alternative: f_loop="field_name"
repeater

Repeater — the user adds any number of rows, each with its own set of fields. Inside fld-loop, use ordinary fld-* attributes; the parser detects that they belong to the row. The TF analogue of the ACF/SCF Repeater.

wrapper div (repeater)
ScopeAttributeAlternative
Post fieldfld-loopf_loop
Optionsopt-loopo_loop
Taxonomy fieldtax-loopt_loop
fld-lottie="field_name"Alternative: f_lottie="field_name"
text

Lottie animation — the field accepts a URL to a JSON file. On the front, it boots a lottie-player on the current element.

div (lottie-player)
ScopeAttributeAlternative
Post fieldfld-lottief_lottie
Optionsopt-lottieo_lottie
Taxonomy fieldtax-lottiet_lottie
fld-page-link="field_name"Alternative: f_page_link="field_name"
page_link

Link to a WordPress page — drop-down picker over existing pages, posts, and CPTs in admin. Returns the permalink and respects the active Polylang/WPML locale.

a (link to page)
ScopeAttributeAlternative
Post fieldfld-page-linkf_page_link
Optionsopt-page-linko_page_link
Taxonomy fieldtax-page-linkt_page_link
fld-phone-link="field_name"Alternative: f_phone_link="field_name"
text

Phone link in one attribute — the generator builds href="tel:..." and injects the number from the field as the visible text inside <a>.

a (tel: + text)
ScopeAttributeAlternative
Post fieldfld-phone-linkf_phone_link
Optionsopt-phone-linko_phone_link
Taxonomy fieldtax-phone-linkt_phone_link
fld-placeholder="field_name"Alternative: f_placeholder="field_name"
text

Writes the value into the placeholder attribute of an input or textarea — the hint shown inside an empty form field.

input (placeholder)
ScopeAttributeAlternative
Post fieldfld-placeholderf_placeholder
Optionsopt-placeholdero_placeholder
Taxonomy fieldtax-placeholdert_placeholder
fld-posts="field_name"Alternative: f_posts="field_name"
relationship

Loop over manually-chosen posts — rendered on the front as a WP_Query with the user-defined order preserved.

wrapper div (post list)
ScopeAttributeAlternative
Post fieldfld-postsf_posts
Optionsopt-postso_posts
Taxonomy fieldtax-postst_posts
fld-radio="field_name"Alternative: f_radio="field_name"
radio

Radio buttons — pick one option from a predefined list. Options are configured in the Theme Panel.

span, div
ScopeAttributeAlternative
Post fieldfld-radiof_radio
Optionsopt-radioo_radio
Taxonomy fieldtax-radiot_radio
fld-select="field_name"Alternative: f_select="field_name"
select

Drop-down list — (label, value) pairs are configured in the Theme Panel via a sub-repeater.

span, div
ScopeAttributeAlternative
Post fieldfld-selectf_select
Optionsopt-selecto_select
Taxonomy fieldtax-selectt_select
fld-shortcode="field_name"Alternative: f_shortcode="field_name"
text

Shortcode as a field value — the content is passed through do_shortcode before output. Any WordPress shortcode in any place in the theme.

div
ScopeAttributeAlternative
Post fieldfld-shortcodef_shortcode
Optionsopt-shortcodeo_shortcode
Taxonomy fieldtax-shortcodet_shortcode
fld-show="field_name"Alternative: f_show="field_name"
true_false

Conditional block reveal — true in admin keeps the block on the front, false removes it (via CSS display:none or a PHP guard).

wrapper div (conditional)
ScopeAttributeAlternative
Post fieldfld-showf_show
Optionsopt-showo_show
Taxonomy fieldtax-showt_show
fld-slug-id="field_name"Alternative: f_slug_id="field_name"
text

Slug-style id with transliteration — the generator takes the value of the linked field and converts it to slug form (Cyrillic → Latin, spaces → hyphens, lowercase).

any (slug-based id)
ScopeAttributeAlternative
Post fieldfld-slug-idf_slug_id
Optionsopt-slug-ido_slug_id
Taxonomy fieldtax-slug-idt_slug_id
fld-style="field_name"Alternative: f_style="field_name"
text

Arbitrary inline CSS on the current element — writes the value into the style attribute. Use sparingly: it overrides stylesheets.

any (style attr)
ScopeAttributeAlternative
Post fieldfld-stylef_style
Optionsopt-styleo_style
Taxonomy fieldtax-stylet_style
fld-terms="field_name"Alternative: f_terms="field_name"
taxonomy

Loop over selected terms — the array from a taxonomy field, convenient for rendering tag clouds or link lists.

wrapper div (term list)
ScopeAttributeAlternative
Post fieldfld-termsf_terms
Optionsopt-termso_terms
Taxonomy fieldtax-termst_terms
fld-text="field_name"Alternative: f_text="field_name"
text

Single-line text field, the most common type. It replaces the element’s whole content with the field’s value; the text in the HTML becomes the field’s first value on “Load data”, not a fallback. Translatable via Polylang/WPML.

div, span, p, h1-h6
ScopeAttributeAlternative
Post fieldfld-textf_text
Optionsopt-texto_text
Taxonomy fieldtax-textt_text
fld-title="field_name"Alternative: f_title="field_name"
text

Writes the value into the HTML title attribute — the tooltip on hover. Most common on links and images.

img (alt/title), a (title)
ScopeAttributeAlternative
Post fieldfld-titlef_title
Optionsopt-titleo_title
Taxonomy fieldtax-titlet_title
fld-value="field_name"Alternative: f_value="field_name"
text

Writes the value into the value attribute of input/select — for defaulting form inputs from admin-editable copy.

input (value)
ScopeAttributeAlternative
Post fieldfld-valuef_value
Optionsopt-valueo_value
Taxonomy fieldtax-valuet_value
fld-video="field_name"Alternative: f_video="field_name"
text

Video by URL — place it on a video block and the admin gets a text field for any video link (YouTube, Vimeo, …); on the front it plays as an embedded player.

div (video block / w-video)
ScopeAttributeAlternative
Post fieldfld-videof_video
Optionsopt-videoo_video
Taxonomy fieldtax-videot_video
fld-youtube="field_name"Alternative: f_youtube="field_name"
text

YouTube video by URL — the generator inserts an embed iframe into the current element.

div (embed)
ScopeAttributeAlternative
Post fieldfld-youtubef_youtube
Optionsopt-youtubeo_youtube
Taxonomy fieldtax-youtubet_youtube

Fields Group (Meta)

Creates an ACF/SCF field group from the field attributes inside the element it sits on. Place it on the element that holds the fields, most often body; the value is the group name in wp-admin (alternative: wp_meta). Without wp-fields-group on a page, no field group is created for that template automatically (you can still add one by hand in the ACF/SCF settings). This attribute does not create template files — they are generated from the Webflow pages separately

wp-fields-group="Group name"Alternative: wp_meta

Creates an ACF/SCF field group from the field attributes inside the element it is placed on. Put it on the element that holds the fields — most often on body; the value is the group name in the admin (alternative: wp_meta). Without wp-fields-group on the page, no field groups are created for that template automatically (you can still add them manually in ACF/SCF settings). It does not create template files — those are generated from the Webflow pages separately.

The group is bound to the template where the fields stand: page → the current page template (post_template), single-{cpt} → post type {cpt}; option fields — by placing them on the theme-options page; term (taxonomy) fields — to the archive template / taxonomy. One page can hold several groups (several wp-fields-group with different fields inside), but do not repeat the same fields in different groups of one template — they will be duplicated in the admin and may cause bugs when filling them in.

Show Editor (wp-show-editor)

Keep the WordPress text editor on a page with custom fields. A ThemeForge attribute (no alternative spelling)

wp-show-editor

Keeps the WP visual editor visible on pages bound to a template via wp-fields-group. By default the editor is hidden — this attribute brings it back.

Place it on body. By default the editor is hidden on pages with wp-fields-group; with this attribute it stays visible.

Field Description

Adds a hint (description) under the field in wp-admin. Works at any nesting level.

instructions="Hint text"

Adds a help text (description) under a field’s label in the WordPress admin. Place it on the same element that carries a field attribute (fld-text, opt-link, a group or repeater container, …) and editors see your guidance right where they fill the field in.

Works at any nesting level — leaf fields, group/repeater rows, and the containers themselves. An instructions on a disabled or mistyped attribute is ignored, since no field is created for it.

Display Control

Controls how the element is displayed in the ACF admin

display="table"

Renders a fld-looper as a table layout in the admin — a compact row grid. Good for short fields (name + price + quantity).

display="block"

Each repeater row is a separate block-card with vertically stacked fields. Default for most types.

display="row"

Fields within a row flow horizontally (flex) — for short «label + value» pairs in admin.

General Attributes

Conditional Display

Conditional output by a WordPress function

wp-if="condition()"Alternative: wp_if

Conditional block output by a WordPress condition: the value is a function call (or expression) returning true/false. When false the block is omitted from the page output entirely. You can also pass just a field name: wp-if="phone" shows the block only when the phone field is filled (equivalent to get_field('phone')). Typical values are in the example cards below; arbitrary PHP expressions are allowed too.

has_post_thumbnail()Checks whether the post has a featured image (thumbnail).
is_user_logged_in()Checks whether the user is authenticated.
is_front_page()Current page is the site front page.
is_single()Current page is a single post.
is_page()Current page is a static page.
is_category()Current page is a category archive.
is_archive()Current page is any archive (category, tag, date, author).
is_search()Current page is a search results page.
is_404()Current page is 404 (not found).

Set HTML Attribute (wp-set)

Puts a given value into an HTML attribute of the element

wp-set="attribute:value" / wp-set="a1:v1; a2:v2" (several pairs separated by ;)Alternative: wp_set

Universal HTML attribute setter. Format: `wp-set="name:value"`. The wp-set attribute itself is removed, and the «name:value» pair is added as a regular HTML attribute on the same element. Multiple pairs can be specified with `;`: `wp-set="n1:v1; n2:v2"`. Examples: `wp-set="type:date"` → `type="date"`; Schema.org microdata `wp-set="itemscope: ; itemtype: https://schema.org/BreadcrumbList"` → `itemscope="" itemtype="https://schema.org/BreadcrumbList"`. If the value needs to be computed via PHP, use wp-set-php instead.

Removes wp-set itself and adds the given names/values as ordinary HTML attributes on the same element. Several pairs are separated with `;`. Example: `wp-set="type:date"` → `type="date"`. Schema.org markup: `wp-set="itemscope: ; itemtype: https://schema.org/BreadcrumbList"` → `itemscope="" itemtype="https://schema.org/BreadcrumbList"`. If the value must be computed in PHP, use wp-set-php.

PHP Expression (wp-php)

An arbitrary PHP expression

wp-php="echo get_field(...)"Alternative: wp_php

Runs arbitrary PHP code in place of the element — the generator wraps the value in <?php ... ?>. Maximum freedom: variables, loops, function calls. For simply printing a value php-echo is more convenient (echo is implied), for conditional display use php-if / wp-if.

Generates <?php echo expression ?> or just the expression. Use sparingly

Echo PHP Expression (php-echo)

Print a PHP expression

php-echo="expression"Alternative: php_echo

Outputs the result of a PHP expression as the element content. Do not write the word echo — it is implied: php-echo="get_the_title()" prints the current post title. For short safe constructs; for code blocks with logic use wp-php.

PHP Condition

A PHP condition

php-if="condition"Alternative: php_if

Conditional rendering: the element is output only if the PHP expression in the value is truthy. E.g. php-if="is_user_logged_in()" shows the block to logged-in visitors only. Any boolean expression works; sibling of wp-if (which leans on ready-made WordPress conditions).

PHP Injection (Positional)

php-before="php code"Alternative: php_before

Inserts raw PHP code immediately BEFORE the element — for setup logic, opening control structures, or variable assignments that wrap the element.

The generator inserts `<?php <code> ?>` right before the element's opening tag. Often paired with php-after for output buffering (capturing the element's HTML and post-processing it). Example: `php-before="ob_start();"` + `php-after="echo strtoupper(ob_get_clean());"` → the whole content of the element is upper-cased.
php-after="php code"Alternative: php_after

Inserts raw PHP code immediately AFTER the element — pairs with php-before to close control structures or run teardown logic.

The generator inserts `<?php <code> ?>` right after the element's closing tag. Its pair is php-before. It can also be used alone (for example `<?php wp_reset_postdata(); ?>` after a loop).
php-insert="php code"Alternative: php_insert

Inserts PHP code INSIDE the element, replacing its children — the element keeps its tag and attributes but its content becomes the code's output.

Replaces the element's content (its children) with `<?php <code> ?>`. The element's own tags stay. Unlike php-replace, which removes the element itself.
php-replace="php code"Alternative: php_replace

Replaces the ENTIRE element (tag included) with the output of the PHP code — use when you need to swap the whole node for dynamic markup.

Removes the element (tags and content) and puts `<?php <code> ?>` in its place. Same behaviour as wp-replace-php.
php-prepend="php code"Alternative: php_prepend

Inserts PHP code at the START of the element's content — prepends the code output before the existing children.

Keeps the element and its children and adds `<?php <code> ?>` BEFORE the children. Its pair is php-append. Combines with php-before/php-after (different insertion points); cannot be combined with php-replace.
php-append="php code"Alternative: php_append

Inserts PHP code at the END of the element's content — appends the code output after the existing children.

The mirror of php-prepend: adds `<?php <code> ?>` AFTER the element's children.

Templates & Loading

wp-include="file_name" (no extension)Alternative: wp_include

Inserts another PHP file of the theme at this spot (a plain include; name without extension — .php is added automatically). Key difference from wp-part: the generator does NOT create or overwrite the wp-include file on theme updates — it is your own partial, written and maintained by hand, and it survives updates. Trick: place wp-part first so the generator extracts the element markup into a file once, then switch the attribute to wp-include — the file stops being overwritten and can be refined by hand.

The element's content is replaced with `<?php include("<name>.php"); ?>`. Give the file name without the extension — the generator adds `.php`. The file must exist in the theme root.
wp-part="slug"Alternative: wp_part

Extracts the element into a separate reusable file (a WordPress template part) and includes it via get_template_part(). Key difference from wp-include: the file is generated from the Webflow markup and is OVERWRITTEN on every theme update — editing it by hand is pointless, edit the source element in Webflow. Handy as an AJAX-refresh target. Combo: wp-part extracts the file once, then you switch the attribute to wp-include — and edit the file by hand without overwrites.

Like wp-include, but uses the WordPress API `get_template_part()`, so child themes and plugins can override the template. The slug is the file name without the extension, relative to the theme root.
wp-shortcode="[shortcode atr=val]"Alternative: wp_shortcode

Executes a WordPress shortcode in place via do_shortcode() — embed plugin output (forms, sliders, WC blocks) anywhere in the layout.

The element's content is replaced with the result of the shortcode run through `do_shortcode()`. The value is the full shortcode string, brackets and parameters included. Handy for Contact Form 7 forms, WooCommerce shortcodes and the like.
wp-load="post_type"Alternative: wp_load

Turns the element into a «Load more» button that AJAX-loads the next page of the current query and appends results — infinite-scroll-style pagination.

Place it on an `<a>` or `<button>`. The generator removes wp-load and adds `data-load="<name>"` + `style="display:none;"` (the button appears only when there is a next page). Its pair is wp-load-part, which names the block to load.
wp-rotation="N"Alternative: wp_rotation

A grouping counter that splits loop results into groups of N (e.g. columns) — increments per item so you can wrap every N items in a row.

Place it on a loop container (`<div wp="posts">`, `<div wp-query="...">`). Inside the loop `$rotation` cycles through 1..N. Used to group items: with N=4 every 4 items form a new row. Row wrappers open on `if ($rotation === 1)` and close on `if ($rotation === N)`.
wp-template-cpt="post_type"Alternative: wp_template_cpt

Binds the template file to a specific custom post type (CPT). Placed on the `<body>` tag. WordPress shows this template in the «Template» dropdown when editing posts of the named CPT. Example: ```html <body wp-template-cpt="product"> ...template content... </body> ``` This template becomes selectable for posts of type `product` (WooCommerce product).

Place it on `<body>`. The generator adds a `/* Template Post Type: <post_type> */` header to the template file, so WordPress offers this template in the «Template» dropdown when editing posts of that type. The attribute itself is removed from body.
wp-sidebar="sidebar_name"Alternative: wp_sidebar

A widget area (dynamic sidebar): the element content is replaced with the widgets the admin put into that area (Appearance → Widgets). The value is the area name; the theme registers it automatically at generation. Plugin widgets go here too — e.g. the Premmerce catalog filter.

Place it on a container. The element's content is replaced with `dynamic_sidebar()` for the given name. Sidebars are registered in the theme's functions.php.

WordPress Menu Output (wp-menu)

Print a registered WordPress menu

wp-menu="Menu name"Alternative: wp_menu

Outputs a WordPress menu by its name from the admin (Appearance → Menus). Items take the classes of the first link; items with sub-items become a two-level dropdown. For a dropdown of your own design use wp-menu-tree.

Menu Templates (wp-menu-tpl)

Menu item template marker inside wp-menu / wp-menu-tree. Place it on the item template so the parser does not have to guess templates: link — a plain item, drop — an item with a dropdown. A ThemeForge attribute (no alternative spelling).

wp-menu-tpl="link"

Template for a plain menu item with no nested children — a simple link. The generator uses this element as a «leaf» when building the menu.

wp-menu-tpl="drop"

Template for a menu item with a dropdown — must contain wp="menu-children" for the nested list. The generator recursively expands child items.

Posts

WordPress Core

Attributes that output standard WordPress fields

wp="post-title"Alternative: wp="post_title"

Outputs the title of the current post or page — whatever is entered into the WP «Title» field. Respects the active Polylang/WPML locale.

h1, h2, div, span
wp="post-content"Alternative: wp="post_content"

Outputs the main post content via the_content() — with Gutenberg blocks, shortcodes, and oEmbed embeds. Must live inside The Loop.

div (main content area)
wp="post-excerpt"Alternative: wp="post_excerpt"

Post excerpt — a short summary from the Excerpt field or auto-generated from the content. Good for archive cards and blog snippets.

div, p
wp="post-date"Alternative: wp="post_date"

Publication date of the post in the theme's format. Format is set under WP «Settings → General» or via the get_the_date filter.

span, time, div
wp="post-image"Alternative: wp="post_image"

Featured image of the post, on an <img>: src comes from the post, srcset and sizes are removed. For a background use post-bg-image.

img (src)
wp="post-link"Alternative: wp="post_link"

Permalink of the current post, written into href. Works on any element, usually an <a>.

a (href)
wp="post-author"Alternative: wp="post_author"

Author display name. By default the author is the user who published the post.

span, div
wp="post-author-link"Alternative: wp="post_author_link"

Link to the post author's archive page — written into href. Opens the author's archive.

a (href)
wp="post-tags"Alternative: wp="post_tags"

Tags of the current post, comma-separated. Each tag is a link to its own archive.

div, span
wp="posts"

Standard WordPress Loop (The Loop) — on archive pages it iterates posts automatically. Anything inside is repeated for each post. Use it ONLY on archive templates (blog / category / CPT-archive / search); on a single-post page it would render an unwanted list of posts.

wrapper div (WP Loop)
wp="pagination"

Page numbers for the blog, archives and search: WP-PageNavi when that plugin is active, otherwise WordPress paginate_links(). Put it on an empty element.

nav, div
wp="home-url"Alternative: wp="home_link"

URL of the site's home page — written into href. On localized versions, points to the current locale's root.

a (href)
wp="post-title-link"Alternative: wp="post_title_link"

Post title wrapped in a link to the post itself — both values at once (text + href). One attribute replaces post-title + post-link.

a (href + text)
wp="next-post-link"Alternative: wp="next_post_link"

Link to the next post in the archive — written into href. Hidden on the last post.

a (href)
wp="prev-post-link"Alternative: wp="prev_post_link"

Link to the previous post in the archive — written into href. Hidden on the first post.

a (href)
wp="post-bg-image"Alternative: wp="post_bg_image"

Post thumbnail as a block background image — URL is written into the inline background-image style.

div (background-image)
wp="post-lbox-image"Alternative: wp="post_lbox_image"

Post thumbnail as a lightbox link — <img> is wrapped in <a href> with lightbox attributes.

a (lightbox href)
wp="site-name"Alternative: wp="site_name"

Alias for bloginfo-name — the site title from WP settings.

span, div, h1
wp="site-desc"Alternative: wp="site_desc"

Alias for bloginfo-description — the site tagline from WP settings.

span, p
wp="breadcrumbs"

Breadcrumbs via the Breadcrumb NavXT plugin — the trail from the home page to the current page. Requires the plugin active.

div, nav
wp="no-results"Alternative: wp="no_results"

Container for the «no results» state in archives and search — the generator only shows it when there are no results (JS-driven).

div (empty state)
wp="term-title"Alternative: wp="term_title"

Outputs the name of the current taxonomy term — category, tag, or custom taxonomy. Used on taxonomy archives and inside fld-term-query loops. Respects the active Polylang/WPML locale.

wp="term-link"Alternative: wp="term_link"

Permalink to the term's archive page — written into the href of an <a>. Multilang-aware.

wp="term-count"Alternative: wp="term_count"

Number of posts in the current taxonomy term (products in a category, posts in a tag). Useful for a badge next to the category name.

wp="product-price"Alternative: wp="product_price"

WooCommerce price of a product that is not on sale; hidden while it is. Put product-price-sale and product-price-regular next to it for sales.

wp="product-price-regular"Alternative: wp="product_price_regular"

The old, struck-through price, shown only while the product is on sale; empty and hidden otherwise. Pair it with product-price-sale.

wp="product-price-sale"Alternative: wp="product_price_sale"

Sale (discounted) WooCommerce product price. Empty when the product has no active sale.

wp="product-prices"Alternative: wp="product_prices"

Wrapper container for the product price block — typically holds product-price-regular and product-price-sale inside. Structures the price block for CSS.

wp="product-sku"Alternative: wp="product_sku"

WooCommerce product SKU. Hidden when the SKU field is not set on the product.

wp="product-gallery"Alternative: wp="product_gallery"

WooCommerce product gallery container — supports swipe and zoom on the product page.

wp="product-cat-image"Alternative: wp="product_cat_image"

WooCommerce product category image — the thumbnail set under Products → Categories. URL is injected into the img src.

wp="product-cat-bg-image"Alternative: wp="product_cat_bg_image"

Product category image as a background-image

wp="product-qty"Alternative: wp="product_qty"

WooCommerce product quantity input — usually <input type="number">. Pairs with product-qty-plus and product-qty-minus.

wp="product-qty-minus"Alternative: wp="product_qty_minus"

Decrement-quantity button for cart or product page. JS reduces the linked product-qty input by 1.

wp="product-qty-plus"Alternative: wp="product_qty_plus"

Increment-quantity button for cart or product page. JS increases the linked product-qty input by 1.

wp="add-to-cart"Alternative: wp="add_to_cart"

Goes on a <form> with a submit button: adds the product without a page reload and updates the cart counter and mini cart. Quantity inside: wp="product-qty". Variable products use the var-* values.

wp="cart-total"Alternative: wp="cart_total"

Cart total as WooCommerce shows it in the cart. Updated without a page reload when the cart changes.

wp="cart-count"Alternative: wp="cart_count"

WooCommerce cart item count — updated via AJAX. Used in the header for a badge on the cart icon.

wp="cart-empty"Alternative: wp="cart_empty"

«Cart is empty» container — the generator shows it only when the cart has no items. Usually contains a «back to shopping» link.

wp="product-group-child"Alternative: wp="product_group_child"

One child-product row of a grouped product — place it on the repeating row of the children loop (wp-product-query="get_grouped_children()"). Supplies the product id and unit price the running total is built from.

wp="product-group-qty"Alternative: wp="product_group_qty"

Quantity field of a child product — becomes a number input starting at 0 («not ordered»), capped to the remaining stock when stock is tracked. Use it instead of wp="product-qty" here: that one belongs to the product’s own form and would move every row at once.

wp="product-group-qty-minus"Alternative: wp="product_group_qty_minus"

Decrease button for a child product — changes the quantity of its own row only.

wp="product-group-qty-plus"Alternative: wp="product_group_qty_plus"

Increase button for a child product — changes the quantity of its own row only.

wp="product-group-totals"Alternative: wp="product_group_totals"

Wrapper of the running total for a grouped product — holds the item count, the sum and the add-to-cart button.

wp="product-group-count"Alternative: wp="product_group_count"

Total quantity currently selected across the child products — recalculated in the browser as the shopper types.

wp="product-group-price"Alternative: wp="product_group_price"

Total price of the current selection — recalculated in the browser as the shopper types.

wp="product-group-add"Alternative: wp="product_group_add"

Adds the whole selection to the cart in one request: every child product whose quantity is above zero.

wp="search"

Site search form wrapper — the generator wraps it in an HTML5 <form action="/?s="> with input[name=s].

wp="autoload"

Marker for AJAX trigger on a filter element (checkbox / radio / select inside wp-filter-form). When set, JS auto-submits the filter form on value change, no «Apply» click needed. NOT infinite-scroll (see wp-load for that).

wp="product-image"Alternative: wp="product_image"

Additional product image — URL is injected into the img src. Distinct from product-gallery (the whole gallery).

wp="product-bg-image"Alternative: wp="product_bg_image"

Product thumbnail as a background image — URL written into the inline background-image style.

wp="product-lbox-image"Alternative: wp="product_lbox_image"

Product thumbnail as a lightbox link — <img> is wrapped in <a href> with lightbox attributes.

wp="product-image-gallery"Alternative: wp="product_image_gallery"

Product gallery without automatic lightbox — use when the modal viewer is wired via a custom JS component.

wp="product-title"Alternative: wp="product_title"

Product title outside the loop context. Inside single-product / loop product use wp="post-title" instead.

wp="product-height"Alternative: wp="product_height"

Product height from the shipping settings in WC admin.

wp="product-width"Alternative: wp="product_width"

Product width from the shipping settings in WC admin.

wp="product-length"Alternative: wp="product_length"

Product length from the shipping settings in WC admin.

wp="product-weight"Alternative: wp="product_weight"

Product weight from the shipping settings in WC admin.

wp="product-sale-percent"Alternative: wp="product_sale_percent"

Discount percentage on the product — computed from regular/sale price. Useful for a -20% badge.

wp="product-attrs"Alternative: wp="product_attrs"

Loop container over the product's attributes (inside: attr-name, attr-options)

wp="attr-name"Alternative: wp="attr_name"

Product attribute name (inside a product-attrs or var-attrs loop)

wp="auto-attr-terms"Alternative: wp="auto_attr_terms"

Terms of the CURRENT attribute inside var-attrs — the same as wp-attr-terms="*", under its own name, so a converter that does not know the mark leaves the markup static

wp="attr-options"Alternative: wp="attr_options"

Product attribute values (inside a product-attrs loop)

wp="var-attrs"Alternative: wp="var_attrs"

Wrapper that repeats its first child once per VARIATION attribute the product actually has — so adding an attribute in WordPress (a new size, a new ingredient) appears on the site with no design change and no theme rebuild. Inside the repeated group use wp="attr-name" for the attribute label and wp-attr-terms="*" for the list of its terms. Attributes you placed by hand on the same template (wp-attr-terms="pa_x" or wp-if-attr="pa_x") are SKIPPED — hand-built blocks are often custom, and would otherwise be rendered twice. Non-taxonomy («free text») attributes are skipped too: they have no terms to choose from. Note: wp="product-attrs" is a different thing — it LISTS attributes as specs; this one builds the CHOOSER.

wp="product"

Product card container — wrapper for a single product on a catalog page.

wp="products"

Catalog loop of the shop and category pages: shows the page’s own products, and the first card is the pattern. For products on another page use wp-product-query.

wp="stock"

Numeric stock count for the product — shown only when stock management is enabled.

wp="stocked"

«In stock» block — the generator shows it when the product is available for purchase.

wp="not-stocked"Alternative: wp="not_stocked"

«Out of stock» block — the generator shows it when the product has no stock.

wp="backorder"

«Available on backorder» block — shown when the product is out of stock but orderable.

wp="var-price"Alternative: wp="var_price"

Current price of the selected variation. Updated via JS when the variation changes.

wp="var-price-regular"Alternative: wp="var_price_regular"

Regular (struck-through) price of the selected variation.

wp="var-price-sale"Alternative: wp="var_price_sale"

Sale price of the selected variation. Empty if no sale.

wp="var-image"Alternative: wp="var_image"

Image of the selected variation — URL injected into src.

wp="var-lbox-image"Alternative: wp="var_lbox_image"

Variation image in lightbox.

wp="var-bg-image"Alternative: wp="var_bg_image"

Variation image as background-image on the current element.

wp="var-desc"Alternative: wp="var_desc"

Description of the selected variation.

wp="var-sku"Alternative: wp="var_sku"

SKU of the selected variation.

wp="var-stock"Alternative: wp="var_stock"

Numeric stock count for the selected variation.

wp="var-stocked"Alternative: wp="var_stocked"

«In stock» block for variation — shown when the selected variation is available.

wp="var-not-stocked"Alternative: wp="var_not_stocked"

«Out of stock» block for variation.

wp="var-backorder"Alternative: wp="var_backorder"

«Backorder» block for variation.

wp="var-id"Alternative: wp="var_id"

Numeric ID of the selected variation.

wp="var-height"Alternative: wp="var_height"

Variation height (shipping).

wp="var-width"Alternative: wp="var_width"

Variation width (shipping).

wp="var-length"Alternative: wp="var_length"

Variation length (shipping).

wp="var-weight"Alternative: wp="var_weight"

Variation weight (shipping).

wp="cart-full"Alternative: wp="cart_full"

«Cart not empty» container — the generator shows it only when the cart has items. Paired with cart-empty.

wp="cart-weight-total"Alternative: wp="cart_weight_total"

Total weight of all items in the cart.

wp="checkout"

Checkout page container — the main wrapper for checkout.php.

wp="checkout-form"Alternative: wp="checkout_form"

Full checkout form — contains billing-* fields and payment/shipping inside.

wp="checkout-full"Alternative: wp="checkout_full"

Filled checkout form — shown when the cart has items.

wp="checkout-total"Alternative: wp="checkout_total"

Final payable amount on the checkout page.

wp="order-total"Alternative: wp="order_total"

Order total amount in the account details view.

wp="order-number"Alternative: wp="order_number"

Order number (text identifier).

wp="order-comments"Alternative: wp="order_comments"

Order comments field — textarea for additional notes from the customer.

wp="discount-total"Alternative: wp="discount_total"

Total discount applied to the order — sum of coupon discounts.

wp="shipping"

Shipping options container — typically holds shipping-radio inside.

wp="shipping-radio"Alternative: wp="shipping_radio"

Radio button for one shipping option.

wp="shipping-cost"Alternative: wp="shipping_cost"

Cost of the selected shipping option.

wp="shipping-countries"Alternative: wp="shipping_countries"

List of countries where shipping is available.

wp="shiping-total"Alternative: wp="shiping_total"

Final shipping cost. The name keeps a typo from the alternative format («shiping»); kept for compatibility.

wp="payment"

Payment methods container — typically holds payment-radio inside.

wp="payment-desc"Alternative: wp="payment_desc"

Description of the selected payment method — caption under the radio button.

wp="payment-radio"Alternative: wp="payment_radio"

Radio button for one payment method.

wp="add-coupon"Alternative: wp="add_coupon"

Coupon code input + apply button.

wp="show-coupon"Alternative: wp="show_coupon"

«Use coupon» trigger button — usually expands the code input form.

wp="discount-amount"Alternative: wp="discount_amount"

Total discount amount in the cart

wp="discount-percent"Alternative: wp="discount_percent"

Total discount percentage in the cart

wp="coupon-discount"Alternative: wp="coupon_discount"

Discount amount from applied coupons only

wp="used-coupons"Alternative: wp="used_coupons"

Loop container over applied coupons (inside: coupon-code, coupon-amount, coupon-descr)

wp="coupon-code"Alternative: wp="coupon_code"

Code of the applied coupon (inside a used-coupons loop)

wp="coupon-amount"Alternative: wp="coupon_amount"

Discount amount of the coupon (inside a used-coupons loop)

wp="coupon-descr"Alternative: wp="coupon_descr"

Coupon description (inside a used-coupons loop)

wp="billing-address"Alternative: wp="billing_address"

Customer address (combined field — joins address_1 + address_2).

wp="billing-address-1"Alternative: wp="billing_address_1"

Customer address — line 1 (street, building).

wp="billing-address-2"Alternative: wp="billing_address_2"

Customer address — line 2 (apartment, suite).

wp="billing-city"Alternative: wp="billing_city"

Customer city.

wp="billing-state"Alternative: wp="billing_state"

Customer state / region.

wp="billing-postcode"Alternative: wp="billing_postcode"

Postal code.

wp="billing-country"Alternative: wp="billing_country"

Customer country (select with the WC countries list).

wp="billing-company"Alternative: wp="billing_company"

Customer company name (for B2B orders).

wp="billing-first-name"Alternative: wp="billing_first_name"

Customer first name.

wp="billing-last-name"Alternative: wp="billing_last_name"

Customer last name.

wp="billing-email"Alternative: wp="billing_email"

Customer email — for order confirmation.

wp="billing-phone"Alternative: wp="billing_phone"

Customer phone.

wp="current-user"Alternative: wp="current_user"

Display name of the currently authenticated WP user. Empty for guests.

wp="login-form"Alternative: wp="login_form"

Standard WordPress login form (wp_login_form).

wp="login-wc"Alternative: wp="login_wc"

WooCommerce login form — extended version for my-account.

wp="register-wc"Alternative: wp="register_wc"

WooCommerce new-user registration form.

wp="recover-wc"Alternative: wp="recover_wc"

WooCommerce password recovery form.

wp="update-user"Alternative: wp="update_user"

User-data edit form in the account dashboard.

wp="update-billing"Alternative: wp="update_billing"

Billing-address edit form in the account dashboard.

wp="update-password"Alternative: wp="update_password"

Password-change form in the account dashboard.

wp="logout-link"Alternative: wp="logout_link"

Logout link — href points to wp-login.php?action=logout with the correct nonce.

wp="orders"

Order list for the current user — repeating block (loop).

wp="customer-files"Alternative: wp="customer_files"

List of downloadable files for the customer (digital products).

wp="customer-file-link"Alternative: wp="customer_file_link"

Download link for a specific customer file.

wp="term-title-link"Alternative: wp="term_title_link"

Taxonomy term title with a link to its archive — text + href in one.

wp="term-desc"Alternative: wp="term_desc"

Taxonomy term description — the «Description» field from the taxonomy admin.

wp="term-children"Alternative: wp="term_children"

Recursion-point marker inside wp-term-tree: container into which the generator inserts the nested-terms block (same structure as the parent). Any nesting depth.

wp="archive-title"Alternative: wp="archive_title"

Archive page title — category name, tag, author, date (depending on archive type).

wp="archive-title-link"Alternative: wp="archive_title_link"

Archive title with a link to the archive itself — text + href.

wp="sort"

Sort selector container — usually a select with orderby options.

wp="orderby"

Sort-order option inside sort. Values: date, price, popularity, etc.

wp="perpage"

«Items per page» selector container for archives.

wp="filter"

Product / post filter container — wrapper for filter forms.

wp="reset-filter"Alternative: wp="reset_filter"

Button to reset all applied filters.

wp="is-mobile"Alternative: wp="is_mobile"

Block renders only on mobile devices (phones + tablets).

wp="is-phone"Alternative: wp="is_phone"

Block renders only on phones (not tablets).

wp="is-tablet"Alternative: wp="is_tablet"

Block renders only on tablets.

wp="is-desktop"Alternative: wp="is_desktop"

Block renders only on desktops.

wp="is-not-phone"Alternative: wp="is_not_phone"

Block renders on all devices except phones (tablets + desktop).

wp="is-ios"Alternative: wp="is_ios"

Block renders only on iOS devices (iPhone, iPad).

wp="is-android"Alternative: wp="is_android"

Block renders only on Android devices.

wp="is-featured"Alternative: wp="is_featured"

Block renders only for «featured» WC products (is_featured flag).

wp="is-novelty"Alternative: wp="is_novelty"

Block renders only for «new arrivals» — recently published products.

wp="post-views"Alternative: wp="post_views"

Post view counter. Requires a compatible plugin (Post Views Counter, etc.).

wp="modified-date"Alternative: wp="modified_date"

Date the post was last modified

wp="has-excerpt"Alternative: wp="has_excerpt"

The block is shown only if the post has an excerpt

wp="post-comments"Alternative: wp="post_comments"

Post comments container — wrapper block (differs from wp="comments" which calls comments_template()).

wp="comment-list"Alternative: wp="comment_list"

Renders the comment list from YOUR markup instead of the WordPress default. The first child that carries comment marks becomes the template of a single comment; WordPress keeps threading, paging and moderation. The card root gets id="comment-<ID>" and a tf-comment-depth-N class — style that class to indent replies, because a reply carries no wrapper of its own.

wp="comment-author"Alternative: wp="comment_author"

The comment author name. Place inside the single-comment template.

wp="comment-avatar"Alternative: wp="comment_avatar"

The author avatar. On an <img> the src is replaced (static srcset/sizes are stripped, otherwise the browser would prefer them); on any other element it becomes a background image.

wp="comment-date"Alternative: wp="comment_date"

The comment date. Place inside the single-comment template.

wp="comment-text"Alternative: wp="comment_text"

The comment body. Place inside the single-comment template.

wp="comment-reply"Alternative: wp="comment_reply"

The "Reply" link. Keeps your element and classes, and receives the real reply address plus the data attributes the built-in reply script needs to move the form under the comment being answered.

wp="comment-form"Alternative: wp="comment_form"

Builds the comment form from YOUR field markup. WordPress still prints the form element itself — that is where its hidden fields, plugin hooks and the reply behaviour live — while your marked blocks become the fields, the textarea and the button. An unmarked field simply keeps the WordPress default.

wp="comment-input-author"Alternative: wp="comment_input_author"

The "Name" field of the comment form. Mark the field or, better, its wrapper (label + input + hint) — the whole marked element becomes the field block.

wp="comment-input-email"Alternative: wp="comment_input_email"

The "Email" field of the comment form.

wp="comment-input-url"Alternative: wp="comment_input_url"

The "Website" field of the comment form.

wp="comment-input-text"Alternative: wp="comment_input_text"

The comment textarea.

wp="comment-submit"Alternative: wp="comment_submit"

The submit button of the comment form. Your markup and classes are kept.

wp="review-list"Alternative: wp="review_list"

Renders WooCommerce product reviews from YOUR markup. A review is a comment plus a rating, so the comment marks work inside the review card unchanged. Everything inside this block is a SOURCE: the first child with review/comment marks becomes the single-review template, and a wp="review-form" block inside becomes the form fields. WooCommerce still owns the block itself — the count and title, pagination, the "purchase required" notice, validation and saving.

wp="review-rating"Alternative: wp="review_rating"

The rating of the review. The element receives data-rating and the CSS variable --tf-rating, so a star bar can be drawn in pure CSS (width: calc(var(--tf-rating) / 5 * 100%)). An EMPTY element gets the number printed into it; markup inside (your own stars) is left untouched.

wp="review-verified"Alternative: wp="review_verified"

Shown only on a review left by a confirmed buyer ("verified owner" in WooCommerce). Your markup, your classes.

wp="review-form"Alternative: wp="review_form"

The review form built from YOUR field markup. Place it inside wp="review-list" — WooCommerce renders the form there. Fields use the comment marks (comment-input-author / -email / -text, comment-submit) plus review-input-rating.

wp="review-input-rating"Alternative: wp="review_input_rating"

The rating control of the review form (a <select>). If it has no options, 1-5 are added. It never travels in the form "fields" array — WordPress prints that only for logged-out visitors, which would hide the rating from every signed-in customer.

wp="post-categories"Alternative: wp="post_categories"

Post categories as a link list. Alternative output format (vs. wp="post-category" which outputs a comma-separated list).

wp="post-bg-link"Alternative: wp="post_bg_link"

Wrap-link on the post card — turns the whole block into a clickable area pointing to post-link.

wp="parent-title-link"Alternative: wp="parent_title_link"

Parent page title with link — for hierarchical pages.

wp="home-link"Alternative: wp="home_link"

Alias of wp="home-url" — link to the site's home page.

wp="search-text"Alternative: wp="search_text"

Search query highlight in the results header («You searched for: ...»). Alternative to wp="search-query".

wp="clear"

Utility marker: removes the element from DOM at build time while keeping its bound ACF/SCF fields in admin. For DOM cleanup without losing editability.

wp="delete-element"Alternative: wp="delete_element"

Synonym of wp="clear": removes the element from DOM at build time while keeping its bound ACF/SCF fields in admin (e.g. an empty tab-divider div).

Custom Query

A custom WP_Query loop

wp-query="'post_type' => 'name', 'posts_per_page' => 10"Alternative: wp_query

Turns the element into a posts loop (WP_Query) anywhere in the theme: inside the element is the card of one post, repeated for every result. Parameters are written as PHP array pairs, e.g. wp-query="'post_type'=>'news', 'posts_per_page'=>6". Inside the loop wp="post-title", wp="post-image", links and the post's fld-* fields all work.

Pagination & Queries

wp-paginate="parameters" / wp-paginate (no value)Alternative: wp_paginate

Renders pagination links for archives and search results via paginate_links(). Parameters (mid_size, end_size, prev/next text…) are passed in the value.

Place it on the container the navigation goes into. The value holds optional parameters joined with `&`: `mid_size` (default 1) — how many page numbers to show before and after the current one; `end_size` (default 1) — how many at the start and the end; `prev_next` (1/0) — whether to show the Previous/Next buttons; `prev_text` / `next_text` — the text of those buttons (default «<» and «>»); `show_all` (1/0) — whether to list every page. For a custom query use wp-paginate-query.
wp-paginate-query="query_name"Alternative: wp_paginate_query

Pagination for a named or custom query rather than the main loop — point it at the same query used by wp-query-name / a custom WP_Query.

Same as wp-paginate, but tied to a named WP_Query (registered with wp-query-name) instead of the global `$wp_query`. The pagination parameters are the same.
wp-query-name="query-preset-name"Alternative: wp_query_name

Runs a post loop from a named query preset defined in the theme panel — admins build the query once (post type, taxonomy, ordering) and reference it by name.

Works like wp-query, but the query arguments come from a named preset on the Queries screen of the theme panel. The loop is the same as wp-query; when WooCommerce is active, `$product` is available inside it.
wp-product-query="get_related_products(4)" / "get_upsell_products(4)" / any PHP expression returning WP_Query argsAlternative: wp_product_query

A WooCommerce loop over the results of a custom product query — related, upsell, cross-sell, or recently-viewed products. Carries WC product context inside.

A loop container. Inside it `$product = wc_get_product(get_the_ID())` is available. Handy for «Frequently bought together» or «Related products» blocks. Any WP_Query arguments can also be passed as a string.
wp-select="query_name"Alternative: wp_select

Builds a <select> from the results of a named query or an ACF repeater — useful for dynamically populated dropdowns.

Place it on a container (usually with `<option>` templates inside). The query name is either the name of an ACF repeater (`have_rows`) or of a named WP_Query registered with wp-query-name. Every iteration adds one `<option>` (or whatever template is inside).

Post Content & Meta

wp-post-id="prefix"Alternative: wp_post_id

Outputs the current post ID, optionally with a text prefix — handy for building unique anchors, form field names, or data attributes that need to reference the post.

Place it on the element that should carry an identifier like «prefix-ID» (for unique anchors, JS selectors, data-attribute values). The value is any prefix; it is joined to the post ID with a hyphen. Without a prefix, leave the value empty and the plain ID is printed.
wp-post-time="format"Alternative: wp_post_time

Outputs the publish time of the current post via get_the_time(). Respects the site's date/time format settings. Must run inside The Loop.

Prints the publish date in the given format (PHP date() syntax). An empty value uses the default format from the WordPress settings. Example: `wp-post-time="d.m.Y"` → 21.05.2026; `wp-post-time="d F"` → 21 May.
wp-post-terms="taxonomy"Alternative: wp_post_terms

Lists the names of all terms a post belongs to in a given taxonomy, joined by commas — e.g. all product categories or tags of the current item.

Prints the names of ALL terms of the given taxonomy assigned to the current post, separated by `", "`. Handy for a «Tags:» / «Categories:» line. If the post has no terms in that taxonomy, nothing is printed.
wp-post-term-desc="taxonomy"Alternative: wp_post_term_desc

Outputs the description text of the post's first term in the given taxonomy. Useful for showing a short blurb under a category label.

Inside a wp-post-terms block (or on its own) prints the `description` of the current term. On a taxonomy archive page, outside a post, it falls back to `get_queried_object()->description`.
wp-post-term-link="taxonomy"Alternative: wp_post_term_link

Sets the href to the archive link of the post's first term in the given taxonomy — turns the element into a clickable link to that category/tag.

Place it on an `<a>` or any element with an `href`. The `href` is replaced with the URL of the post's first term in the given taxonomy. The wp-post-term-link attribute itself is removed.
wp-post-term-query="taxonomy"Alternative: wp_post_term_query

Loops over the taxonomy terms the current post belongs to, rendering the inner markup once per term. Use it to print a list of category badges, each linked and styled.

A loop container. Inside it `$term` — the current term — is available, so wp-term-title, wp-term-link and wp-count work. The terms come from `wp_get_post_terms()`.
wp-post-term-path="taxonomy"Alternative: wp_post_term_path

Renders breadcrumbs from the term hierarchy of the post — the chain of ancestor terms down to the current one, each as a link. Ideal for category breadcrumb trails.

Place it on an `<a>` — the template of one breadcrumb. It is repeated for every ancestor of the post's term, each crumb linking to `get_term_link()`. A separator (usually `<span class="br-sep">/</span>`) is added before each crumb. For taxonomy archives use wp-term-path.
wp-count="singular, plural, plural (many)"Alternative: wp_count

Outputs a pluralised label with the result count — e.g. «12 products» / «1 product» — choosing the correct grammatical form for the number.

Prints the number of posts in the current term or query together with the right plural form of the noun. List three forms separated by commas (as in WordPress _n()). Used inside wp-term-query or a similar block where the current term has a post count. Example: `article, articles, articles` → «5 articles», «1 article».
wp-attr-meta="Attribute name"Alternative: wp_attr_meta

Loops over a product's custom (non-taxonomy) WooCommerce attributes — the per-product attributes defined directly on the product rather than as global pa_* taxonomies.

Unlike wp-attr-terms, this works with a product's custom attributes (not a global pa_* taxonomy), i.e. values entered on the product itself. The name is written exactly as it is set in the product attribute, including non-Latin characters.

Current Post Taxonomy Terms (wp-post-term)

Loop over the taxonomy terms of the current post

wp-post-term="product_cat" / "category" / "pa_color"Alternative: wp_post_term

The first term of the current post in a taxonomy (category, post_tag, product_cat, pa_color…): name and link on an <a>, the name elsewhere. All terms as badges: wp-post-term-query; all in one line: wp-post-terms.

Prints the first term of the current post; nothing when the post has none

Comments

wp-comment-formAlternative: wp_comment_form

Renders the WordPress comment form for the current post via comment_form() — respects discussion settings and moderation rules.

Used without a value. Replaces the element's content with the standard comment form, `comment_form()`. The form's fields, button and texts come from the WordPress settings and the theme's styles.
wp-comment-listAlternative: wp_comment_list

Renders the list of comments for the current post — threaded replies, author avatars, and dates per theme settings.

Used without a value. Replaces the element's content with the comment list, `wp_list_comments()`. Often used together with wp-comment-form.

Taxonomies

Taxonomy Term Query (wp-term-query)

Loop over taxonomy terms (WP_Term_Query)

wp-term-query="product_cat" or wp-term-query="'taxonomy' => 'product_cat', 'parent' => 0"Alternative: wp_term_query

Loop over taxonomy terms (WP_Term_Query / get_terms). Parameters either in short form («product_cat») or full string («'taxonomy' => 'product_cat', 'parent' => 0»). Inside, use term-title, term-link, term-count.

Inside, use term-title, term-link, term-count, term-children

Terms & Taxonomies

wp-term-path="taxonomy"Alternative: wp_term_path

Renders breadcrumbs for a taxonomy archive page — the ancestor chain of the currently queried term. Place it on the category/tag archive template.

Same as wp-post-term-path, but for the archive page of the taxonomy itself (not a single post). Takes the page's current term from `get_queried_object_id()`. Each crumb links to an ancestor term.
wp-term-tree="taxonomy"Alternative: wp_term_tree

Renders a hierarchical tree of taxonomy terms with recursive nesting — parent terms with their children, to any depth. The first child element becomes the row template.

A loop container that prints terms with their nesting (parents → children). `$term` is available inside. Used for catalogues and product menus.
wp-term-query2="query parameters"Alternative: wp_term_query2

Nested term loop, level 2 — runs inside wp-term-tree / wp-term-query to render the children of the current term. Parent is set automatically from the outer loop.

A nested loop inside a parent wp-term-query: iterates over the children of the current outer term (`parent => $term->term_id` is added to the arguments automatically). Inside it the term is `$term_2`.
wp-term-query3="query parameters"Alternative: wp_term_query3

Nested term loop, level 3 — the third level of a term hierarchy, nested inside a level-2 loop. Same auto-parent behaviour as level 2.

Same as wp-term-query2, one level deeper (the children of `$term_2`). Inside it the term is `$term_3`.
wp-term-select="preset-name"Alternative: wp_term_select

Loops over terms from a named term-query preset configured in the theme panel — lets an admin define the term set once and reuse it across templates.

The WP_Term_Query counterpart of wp-query-name: the arguments come from a named term-query preset on the Queries screen of the theme panel.
wp-menu-tree="Menu name"Alternative: wp_menu_tree

Renders a WordPress menu by name with your own markup: one pattern for a plain item and one for an item with a dropdown (wp-menu-tpl="link" / "drop"). Any depth: wp="menu-children" inside a sub-item prints the next level.

The menu counterpart of wp-term-tree: prints a menu with its nesting. Inside the block these marks work: `wp="menu_title"`, `wp="menu_link"`, `wp="menu_title_link"`, `wp_if="menu_children"`, `wp="menu_children"` (recursion).

Conditional Blocks

wp-has-term="taxonomy" / wp-has-term="taxonomy:term-slug"Alternative: wp_has_term

Conditional block — renders its contents only if the current post HAS at least one term in the given taxonomy (e.g. show a badge only for products in a sale category).

Place it on a wrapper block. Without a colon it checks whether the post has at least one term of the given taxonomy; with a colon it checks one specific term by slug. If the condition holds, the block is shown; otherwise it is hidden.
wp-has-not-term="taxonomy" / wp-has-not-term="taxonomy:term-slug"Alternative: wp_has_not_term

Conditional block — renders its contents only if the current post does NOT have a term in the given taxonomy. The inverse of wp-has-term.

The opposite of wp-has-term. Place it on a wrapper block. Without a colon the block is shown if the post has no term of that taxonomy; with a colon, if the post lacks one specific term.
wp-set-php="attribute: php code"Alternative: wp_set_php

Sets an HTML attribute from a PHP expression — the value «name:php_code» becomes name="<result>" with the code evaluated and escaped at render.

Same as wp-set, but the value comes from running PHP code. Useful for dynamic id/data-* attributes. Example: `wp-set-php="id: echo $term->term_id"` → `id="<?php echo $term->term_id ?>"`. For static values use wp-set.

WooCommerce (Shop)

WooCommerce Cart (wp-cart)

Product fields in the WooCommerce cart loop

wp-cart="items"Alternative: wp_cart="items"

Cart items loop container — the generator expands a foreach over WC()->cart->get_cart() inside. Use product_title, product_qty, product_price, etc. within.

wp-cart="mini"Alternative: wp_cart="mini"

Mini cart (sidecart) — compact cart variant for the header or a dropdown block.

wp-cart="not_empty"Alternative: wp_cart="not_empty"

«Cart not empty» wrapper — the generator shows the block only when the cart has items. Paired with cart-empty.

wp-cart="empty"Alternative: wp_cart="empty"

«Cart is empty» wrapper — shown only when the cart has no items, the same block as wp="cart-empty". Paired with not_empty.

wp-cart="product_title"Alternative: wp_cart="product_title"

Product title in the cart row — same as the catalog product title.

wp-cart="product_link"Alternative: wp_cart="product_link"

Product permalink in the cart row — written into the href of an <a>.

wp-cart="product_image"Alternative: wp_cart="product_image"

Product image (src) in the cart row — thumbnail or a specifically assigned image.

wp-cart="product_bg_image"Alternative: wp_cart="product_bg_image"

Product image as background-image on the cart row element.

wp-cart="product_price"Alternative: wp_cart="product_price"

Unit price of a product in the cart that is not on sale; add product_price_sale and product_price_regular for discounted items.

wp-cart="product_price_regular"Alternative: wp_cart="product_price_regular"

Regular (struck-through) unit price of the product in cart.

wp-cart="product_price_sale"Alternative: wp_cart="product_price_sale"

Sale unit price of the product in cart.

wp-cart="product_qty"Alternative: wp_cart="product_qty"

Quantity input field for the cart item.

wp-cart="product_qty_minus"Alternative: wp_cart="product_qty_minus"

Decrement-quantity (-) button for the cart item.

wp-cart="product_qty_plus"Alternative: wp_cart="product_qty_plus"

Increment-quantity (+) button for the cart item.

wp-cart="product_remove"Alternative: wp_cart="product_remove"

Remove-from-cart button (usually a cross in the row).

wp-cart="product_total"Alternative: wp_cart="product_total"

Subtotal for the cart row (unit price × quantity).

wp-cart="product_excerpt"Alternative: wp_cart="product_excerpt"

Short product description in the cart row

wp-cart="product_sale_percent"Alternative: wp_cart="product_sale_percent"

Product discount percentage in the cart row

wp-cart="product_qty_text"Alternative: wp_cart="product_qty_text"

Product quantity as text (no input field)

wp-cart="product_weight"Alternative: wp_cart="product_weight"

Product weight in the cart row

wp-cart="product_height"Alternative: wp_cart="product_height"

Product height in the cart row

wp-cart="product_width"Alternative: wp_cart="product_width"

Product width in the cart row

wp-cart="product_length"Alternative: wp_cart="product_length"

Product length in the cart row

wp-cart="subtotal"Alternative: wp_cart="subtotal"

Cart subtotal (before discounts)

wp-cart="total"Alternative: wp_cart="total"

Cart total (after discounts)

wp-cart="volume"Alternative: wp_cart="volume"

Total volume of the products in the cart (m³)

wp-cart="mobile"Alternative: wp_cart="mobile"

Mobile version of the cart (the same AJAX-updated mini cart)

wp-cart="cart_order"Alternative: wp_cart="cart_order"

Container of the full cart order block (data-wc="full_cart")

wp-cart="remove_all"Alternative: wp_cart="remove_all"

Button that empties the whole cart

wp-cart="remove_btn"Alternative: wp_cart="remove_btn"

Button that removes the selected products

wp-cart="remove_item"Alternative: wp_cart="remove_item"

Checkbox that selects one product for removal

wp-cart="remove_items"Alternative: wp_cart="remove_items"

«Select all» checkbox for bulk removal

wp-cart="if_low_stock"Alternative: wp_cart="if_low_stock"

Conditional block: shown if the product is low in stock

wp-cart="low_stock"Alternative: wp_cart="low_stock"

The low-stock threshold of the product; works inside wp-cart="if_low_stock".

Cart Product Attribute (wp-cart-attr)

A WooCommerce product attribute in the cart loop

wp-cart-attr="pa_size" / "pa_color"Alternative: wp_cart_attr

Outputs the value of a WooCommerce product attribute in the cart loop. For example, the size or color of the product in the cart row. Value is the attribute slug (pa_size).

Inside wp_cart="items" — prints the value of a product attribute (for example the size) in the cart row

Conditional Cart Attribute (wp-cart-if-attr)

Conditional block inside the cart: shown only if the product in the cart has the attribute

wp-cart-if-attr="pa_size"Alternative: wp_cart_if_attr

Conditional block in the cart context: render only when a cart item has the named attribute. The cart-row analogue of wp-if-attr.

Same as wp-if-attr, but in the wp_cart="items" context

WooCommerce Variations & Cart

wp-var-select="pa_attribute"Alternative: wp_var_select

A variation <select> for a WooCommerce variable-product attribute — populates options from the product's variations and drives the add-to-cart variation picker.

In a single-product context prints one `<option>` per value of the given variation attribute. Place it on the `<select>`; it gets `name="attribute_<attr>"`, as WooCommerce expects for variation selection.
wp-cart-term="taxonomy"Alternative: wp_cart_term

Outputs a taxonomy term of the product in a cart row — e.g. the category or a custom attribute term, shown next to each cart line item.

Inside the cart loop (`wp-cart="items"`) prints the names of the given taxonomy's terms for the product in the row. Works like wp-cart-attr, but for terms. Its pair is wp-cart-if-term (conditional output when the term is present).
wp-cart-if-term="taxonomy:term" or wp-cart-if-term="term"Alternative: wp_cart_if_term

Conditional block inside a cart row — renders its contents only if the line-item product has the given taxonomy term.

Conditional block in the cart loop: shows the wrapped block if the product in the row has the given term. Works like wp-cart-if-attr, but for terms.

Product Attribute Terms (wp-attr-terms)

Loop over the terms of a WooCommerce product attribute

wp-attr-terms="pa_size" / "pa_color" / "*"Alternative: wp_attr_terms

Loop over all terms of a WooCommerce product attribute. For example, iterates all sizes (pa_size) or all colors (pa_color). Used on the product page or in filters.

Iterates over every value of an attribute (for example every size). Inside, use term-title, term-link. The value "*" means the terms of the CURRENT attribute — it works only inside a wp="var-attrs" container (outside it there is nothing to iterate, and this is reported in the Logs)

Conditional Product Attribute (wp-if-attr)

Conditional block: shown only if the product has the given attribute

wp-if-attr="pa_size"Alternative: wp_if_attr

Conditional block: render only when the current product has the named attribute. If the attribute is missing — the whole block is hidden.

If the current product has no value for the attribute, the block is hidden

Conditional: Product Stock Status (wp-in-stock)

Conditional block: shown only for a product in stock (1) or out of stock (0)

wp-in-stock="1" / wp-in-stock="0"Alternative: wp_in_stock

Conditional block by the product's stock status: with 1 it renders only for a product in stock, with 0 only for a product that is out of stock. Typical use — a buy form wrapped in 1 and an «Out of stock» notice wrapped in 0, so each product shows exactly one of them.

Place it on a wrapper block. Values: 1 (in stock) or 0 (out of stock); the WooCommerce status names instock, outofstock and onbackorder are accepted as well. A product on backorder matches neither 1 nor 0, so it shows neither block — mark a separate block with onbackorder if you need one. Both spellings work: wp_in_stock and wp-in-stock. Any other value is not guessed: the block is left unconditional and the attribute is reported in the project's «Logs» tab.

WooCommerce Order (wp-order)

Order fields on the order details page (My Account)

wp-order="items"Alternative: wp_order="items"

Order items loop container — the generator expands a foreach over the order's line items (account dashboard).

wp-order="item_title"Alternative: wp_order="item_title"

Product title in the order row.

wp-order="item_link"Alternative: wp_order="item_link"

Product permalink in the order row.

wp-order="item_image"Alternative: wp_order="item_image"

Product image (src) in the order row.

wp-order="item_bg_image"Alternative: wp_order="item_bg_image"

Product image as background-image in the order row.

wp-order="item_price"Alternative: wp_order="item_price"

Unit price of the product at the time the order was placed.

wp-order="item_qty"Alternative: wp_order="item_qty"

Item quantity in the order.

wp-order="item_total"Alternative: wp_order="item_total"

Subtotal for the order row (unit price × quantity).

wp-order="item_number"Alternative: wp_order="item_number"

Position of the item in the order: 1, 2, 3 … Place it inside the wp_order="items" row — every row shows its own number.

wp-order="number"Alternative: wp_order="number"

Order number — short text identifier.

wp-order="date"Alternative: wp_order="date"

Order date in the theme's format.

wp-order="status"Alternative: wp_order="status"

Order status (pending, processing, completed, etc.) — label translated via WC.

wp-order="total"Alternative: wp_order="total"

Order total (items + shipping - discounts).

wp-order="delivery"Alternative: wp_order="delivery"

Shipping method selected when the order was placed.

wp-order="payment"Alternative: wp_order="payment"

Payment method selected when the order was placed.

Filters & Search

wp-filter-form="post_type"Alternative: wp_filter_form

Turns a Webflow form into a WooCommerce/WordPress filter form — submitting it filters the product/post archive by the contained fields (terms, ranges, search).

Place it on a `<form>`. The generator removes wp-filter-form and adds to the form: `action="<?php echo get_home_url() ?>/index.php#results"`, `data-action="search_filter_ajax"` and a hidden `<input type="hidden" name="post_type" value="<post_type>">`. Works together with wp-filter-query (the results container): both are on the page, the form sends GET parameters and the container builds a WP_Query from them.
wp-range-slider="field_name"Alternative: wp_range_slider

A range-slider UI control for a numeric filter (e.g. price). Pairs with wp-range-min / wp-range-max inputs inside the same filter form.

Place it on the slider container. Its pair marks are wp-range-min and wp-range-max on the inputs inside. Used inside wp-filter-form to filter products by a numeric attribute (price, rating and so on). The field name is usually `_price` (the WooCommerce price filter).
wp-range-min="suffix"Alternative: wp_range_min

The minimum-value input of a range filter — its value seeds the lower bound of the filter (and reflects the current $_GET value on reload).

Place it on an `<input>`. The generator renames the element's `id` and `name` to `min_pm_<suffix>` and fills the value from `$_GET` (or the default). Its pair is wp-range-max. Used inside wp-filter-form with wp-range-slider.
wp-range-max="suffix"Alternative: wp_range_max

The maximum-value input of a range filter — the upper bound, mirroring wp-range-min behaviour.

Same as wp-range-min. The generator renames `id` and `name` to `max_pm_<suffix>` and fills the value from `$_GET`.
wp-checkbox-terms="taxonomy"Alternative: wp_checkbox_terms

Renders a checkbox list of taxonomy terms for a filter — each checkbox toggles one term in the archive query. The first checkbox row is the template.

Place it on the checkbox template (for example `<label class="w-checkbox">`). The generator repeats the template for every term of the taxonomy, renames the `<input>` to `name="<taxonomy>[]"` (an array), adds `value="<term slug>"` and checks the box when the term is already in `$_GET["<taxonomy>"]`. Used inside wp-filter-form.
wp-radio-terms="taxonomy"Alternative: wp_radio_terms

Renders a radio-button list of taxonomy terms for a filter — single-select variant of wp-checkbox-terms.

The radio counterpart of wp-checkbox-terms. Place it on a `<label>` containing `<input type="radio">`. The template is repeated for every term; the `<input>` gets `name="<taxonomy>"` (a single value, not an array as with checkboxes) and `value="<slug>"`, and the current choice from `$_GET` is checked automatically.
wp-select-terms="taxonomy"Alternative: wp_select_terms

Renders a <select> dropdown of taxonomy terms for a filter — the option list is populated from the taxonomy at render time.

The `<select>` counterpart of wp-radio-terms/wp-checkbox-terms. Place it on a `<select>`. It gets `name="<taxonomy>"`, one `<option value="<slug>">` is printed per term, and the option matching `$_GET[<taxonomy>]` is marked `selected`.
pm__skuinput name — not an attribute

A naming convention for a search input — an <input name="pm__sku"> inside a filter form enables searching products by SKU. Set the name to pm__sku rather than adding a separate attribute.

Numeric range inputs follow the same convention: min_pm__<attr> / max_pm__<attr> (covered by the wp-range-min / wp-range-max attributes).

Wishlist

Wishlist

All wishlist attributes in one place: containers, action buttons, item fields and variation directives. Canonical form first — both alternative spellings are accepted.

Structure & counter

wp="wish-list"Alternative: wp="wish_list"

Wishlist container (YITH Wishlist) — wrapper around the products table. Put wp="wish-items" with the loop inside.

div (wishlist container)
wp="wish-items"Alternative: wp="wish_items"/ wp="wl_full"

Loop over products in the wishlist — repeats for each saved product. Inside, use wp-wl="..." for product fields.

wrapper div (wishlist loop)
wp="wish-count"Alternative: wp="wish_count"/ wp="wl_count"

Wishlist product count for the current user — updates on add/remove.

span

Action buttons

wp="wish-add"Alternative: wp="wish_add"/ wp="add_to_wl"

Heart-button «Add to wishlist» — placed on a product or in a product card. Click toggles the product via AJAX.

button, a
wp="wish-copy"Alternative: wp="wish_copy"/ wp_wl="copy"

Button «Copy to cart» — adds the wishlist product to the cart while keeping it in the wishlist.

button, a
wp="wish-move"Alternative: wp="wish_move"/ wp_wl="move"

Button «Move to cart» — adds to cart and removes from wishlist in one action.

button, a
wp="wish-remove"Alternative: wp="wish_remove"/ wp_wl="remove"

Remove-from-wishlist button — usually a cross in the row.

button, a
wp="wish-remove-all"Alternative: wp="wish_remove_all"

Button that empties the whole wishlist

Item fields (inside the wishlist loop)

wp="wl-product-title"Alternative: wp_wl="product_title"

Product name in a wishlist row — output via get_name().

wp="wl-product-link"Alternative: wp_wl="product_link"

Product permalink — written into the href of an <a>.

wp="wl-product-image"Alternative: wp_wl="product_image"

Product thumbnail — URL injected into the src of an img.

wp="wl-product-bg-image"Alternative: wp_wl="product_bg_image"

Product thumbnail as a background image — URL written into the inline background-image style.

wp="wl-product-price"Alternative: wp_wl="product_price"

Current product price — if there's a discount, the sale price is shown; otherwise the regular price.

wp="wl-product-price-regular"Alternative: wp_wl="product_price_regular"

Regular (struck-through) wishlist product price. Name in the alternative format; alias of product_regular_price.

wp="wl-product-price-sale"Alternative: wp_wl="product_price_sale"

Sale wishlist product price. Name in the alternative format; alias of product_sale_price.

Variation & taxonomy directives

wp-wish-attr="pa_size" or wp-wish-attr="pa_color"Alternative: wp_wish_attr

WooCommerce product attribute in the wishlist loop — e.g. size or color. Attribute name is pa_<slug> from product settings.

wp-wish-if-attr="pa_size"Alternative: wp_wish_if_attr

Conditional block: render only when the product has the named attribute. If the attribute is missing — the block is hidden.

wp-wish-term="product_cat" or wp-wish-term="product_tag"Alternative: wp_wish_term

Taxonomy term of the product in the wishlist loop — category or tag (product_cat, product_tag).

wp-wish-if-term="product_cat"Alternative: wp_wish_if_term

Conditional block: shown only if the product has a term of the taxonomy

No attributes found for this query