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.
Text and images
Lists
Site settings
Blog and posts
Show on a condition
Shop
Admin comfort
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 fieldvalue belongs to a specific post, page, or CPT entry
fld-text="field_name"Alternative: f_text="field_name"opt-*Optionssite-wide asset — logo, contacts, favicon
opt-text="field_name"Alternative: o_text="field_name"tax-*Taxonomy fieldvalue 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"Writes the value into the alt attribute of an img tag — the image description for accessibility and SEO. Polylang/WPML-aware.
fld-altf_altopt-alto_alttax-altt_altfld-anchor="field_name"Alternative: f_anchor="field_name"Anchor link — the field accepts an identifier without the # sign; the generator prepends the hash when writing into href.
fld-anchorf_anchoropt-anchoro_anchortax-anchort_anchorfld-area="field_name"Alternative: f_area="field_name"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.
fld-areaf_areaopt-areao_areatax-areat_areafld-auto-id="field_name"Alternative: f_auto_id="field_name"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.
fld-auto-idf_auto_idopt-auto-ido_auto_idtax-auto-idt_auto_idfld-bg-color="field_name"Alternative: f_bg_color="field_name"Background color — writes the value into the inline background-color style. Color-picker in admin.
fld-bg-colorf_bg_coloropt-bg-coloro_bg_colortax-bg-colort_bg_colorfld-bg-image="field_name"Alternative: f_bg_image="field_name"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.
fld-bg-imagef_bg_imageopt-bg-imageo_bg_imagetax-bg-imaget_bg_imagefld-bg-video="field_name"Alternative: f_bg_video="field_name"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.
fld-bg-videof_bg_videoopt-bg-videoo_bg_videotax-bg-videot_bg_videofld-checkbox="field_name"Alternative: f_checkbox="field_name"Binds an input[type=checkbox] state to a boolean ACF/SCF field. The generator adds the checked attribute when the value is true.
fld-checkboxf_checkboxopt-checkboxo_checkboxtax-checkboxt_checkboxfld-checkbox-custom="field_name"Alternative: f_checkbox_custom="field_name"Custom checkbox inside fld-loop — every row gets a unique name, so form submission returns an array of values.
fld-checkbox-customf_checkbox_customopt-checkbox-customo_checkbox_customtax-checkbox-customt_checkbox_customfld-class="field_name"Alternative: f_class="field_name"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.
fld-classf_classopt-classo_classtax-classt_classfld-code="field_name"Alternative: f_code="field_name"Arbitrary code snippet — the value is printed verbatim, no escaping (raw output). Use for tracking pixels, third-party iframe widgets, inline styles.
fld-codef_codeopt-codeo_codetax-codet_codefld-color="field_name"Alternative: f_color="field_name"Text color — writes the value into the inline color style of the current element. The admin shows a color-picker with alpha.
fld-colorf_coloropt-coloro_colortax-colort_colorfld-custom="field_name"Alternative: f_custom="field_name"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.
fld-customf_customopt-customo_customtax-customt_customfld-editor="field_name"Alternative: f_editor="field_name"Visual editor (TinyMCE) for formatted text: headings, lists, links, images. Put it on a div: WordPress wraps the text in paragraphs itself.
fld-editorf_editoropt-editoro_editortax-editort_editorfld-email-link="field_name"Alternative: f_email_link="field_name"Email link in one attribute — the generator builds href="mailto:..." and injects the address from the field as the visible link text inside <a>.
fld-email-linkf_email_linkopt-email-linko_email_linktax-email-linkt_email_linkfld-file="field_name"Alternative: f_file="field_name"Arbitrary file upload — PDF, DOCX, ZIP, etc. The URL is injected into the href of an <a>. Standard media uploader in admin.
fld-filef_fileopt-fileo_filetax-filet_filefld-gallery="field_name"Alternative: f_gallery="field_name"Image gallery — an array of images with drag-and-drop ordering. Rendered on the front as a loop over images.
fld-galleryf_galleryopt-galleryo_gallerytax-galleryt_galleryfld-gmap="field_name"Alternative: f_gmap="field_name"Google Maps field — coordinates, address, and zoom in one picker with an interactive map. Requires a Google Maps API key in Theme Settings.
fld-gmapf_gmapopt-gmapo_gmaptax-gmapt_gmapfld-gmap-addr="field_name"Alternative: f_gmap_addr="field_name"Textual address from a Google Map — extracts the address component from the gmap object. Useful for a caption under the map.
fld-gmap-addrf_gmap_addropt-gmap-addro_gmap_addrtax-gmap-addrt_gmap_addrfld-group="field_name"Alternative: f_group="field_name"Container of nested fields — all fld-* inside become sub-fields of the group in admin. No own value, just structures the Theme Panel.
fld-groupf_groupopt-groupo_grouptax-groupt_groupfld-hide="field_name"Alternative: f_hide="field_name"Conditional block hide — mirror of show with inverted logic. true in admin removes the block from the markup.
fld-hidef_hideopt-hideo_hidetax-hidet_hidefld-id="field_name"Alternative: f_id="field_name"Writes the value into the HTML id of the current element. For auto-generation from content, see auto_id or slug_id.
fld-idf_idopt-ido_idtax-idt_idfld-image="field_name"Alternative: f_image="field_name"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.
fld-imagef_imageopt-imageo_imagetax-imaget_imagefld-image-gallery="field_name"Alternative: f_image_gallery="field_name"Gallery without automatic lightbox wrapping — use it when your modal viewer is wired through a custom JS component.
fld-image-galleryf_image_galleryopt-image-galleryo_image_gallerytax-image-galleryt_image_galleryfld-layout="field_name"Alternative: f_layout="field_name"A single block template inside fld-layouts — contains the elements rendered for a specific layout variant.
fld-layoutf_layoutopt-layouto_layouttax-layoutt_layoutfld-layouts="field_name"Alternative: f_layouts="field_name"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.
fld-layoutsf_layoutsopt-layoutso_layoutstax-layoutst_layoutsfld-lbox-gallery="field_name"Alternative: f_lbox_gallery="field_name"Gallery in a lightbox — each image is automatically wrapped in an <a> with lightbox attributes for the chosen widget.
fld-lbox-galleryf_lbox_galleryopt-lbox-galleryo_lbox_gallerytax-lbox-galleryt_lbox_galleryfld-lbox-image="field_name"Alternative: f_lbox_image="field_name"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).
fld-lbox-imagef_lbox_imageopt-lbox-imageo_lbox_imagetax-lbox-imaget_lbox_imagefld-lbox-video="field_name"Alternative: f_lbox_video="field_name"Lightbox video — the field accepts a URL (YouTube, Vimeo, MP4) and turns into a lightbox link with on-click embed.
fld-lbox-videof_lbox_videoopt-lbox-videoo_lbox_videotax-lbox-videot_lbox_videofld-link="field_name"Alternative: f_link="field_name"Universal link as a plain-text field — user enters a URL, the generator writes it into href. No post picker, no scheme validation.
fld-linkf_linkopt-linko_linktax-linkt_linkfld-list="field_name"Alternative: f_list="field_name"List of values via textarea — each line becomes an array element. Good for benefits, tags, simple enumerations without a full repeater.
fld-listf_listopt-listo_listtax-listt_listfld-loop="field_name"Alternative: f_loop="field_name"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.
fld-loopf_loopopt-loopo_looptax-loopt_loopfld-lottie="field_name"Alternative: f_lottie="field_name"Lottie animation — the field accepts a URL to a JSON file. On the front, it boots a lottie-player on the current element.
fld-lottief_lottieopt-lottieo_lottietax-lottiet_lottiefld-page-link="field_name"Alternative: f_page_link="field_name"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.
fld-page-linkf_page_linkopt-page-linko_page_linktax-page-linkt_page_linkfld-phone-link="field_name"Alternative: f_phone_link="field_name"Phone link in one attribute — the generator builds href="tel:..." and injects the number from the field as the visible text inside <a>.
fld-phone-linkf_phone_linkopt-phone-linko_phone_linktax-phone-linkt_phone_linkfld-placeholder="field_name"Alternative: f_placeholder="field_name"Writes the value into the placeholder attribute of an input or textarea — the hint shown inside an empty form field.
fld-placeholderf_placeholderopt-placeholdero_placeholdertax-placeholdert_placeholderfld-posts="field_name"Alternative: f_posts="field_name"Loop over manually-chosen posts — rendered on the front as a WP_Query with the user-defined order preserved.
fld-postsf_postsopt-postso_poststax-postst_postsfld-radio="field_name"Alternative: f_radio="field_name"Radio buttons — pick one option from a predefined list. Options are configured in the Theme Panel.
fld-radiof_radioopt-radioo_radiotax-radiot_radiofld-select="field_name"Alternative: f_select="field_name"Drop-down list — (label, value) pairs are configured in the Theme Panel via a sub-repeater.
fld-selectf_selectopt-selecto_selecttax-selectt_selectfld-shortcode="field_name"Alternative: f_shortcode="field_name"Shortcode as a field value — the content is passed through do_shortcode before output. Any WordPress shortcode in any place in the theme.
fld-shortcodef_shortcodeopt-shortcodeo_shortcodetax-shortcodet_shortcodefld-show="field_name"Alternative: f_show="field_name"Conditional block reveal — true in admin keeps the block on the front, false removes it (via CSS display:none or a PHP guard).
fld-showf_showopt-showo_showtax-showt_showfld-slug-id="field_name"Alternative: f_slug_id="field_name"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).
fld-slug-idf_slug_idopt-slug-ido_slug_idtax-slug-idt_slug_idfld-style="field_name"Alternative: f_style="field_name"Arbitrary inline CSS on the current element — writes the value into the style attribute. Use sparingly: it overrides stylesheets.
fld-stylef_styleopt-styleo_styletax-stylet_stylefld-terms="field_name"Alternative: f_terms="field_name"Loop over selected terms — the array from a taxonomy field, convenient for rendering tag clouds or link lists.
fld-termsf_termsopt-termso_termstax-termst_termsfld-text="field_name"Alternative: f_text="field_name"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.
fld-textf_textopt-texto_texttax-textt_textfld-title="field_name"Alternative: f_title="field_name"Writes the value into the HTML title attribute — the tooltip on hover. Most common on links and images.
fld-titlef_titleopt-titleo_titletax-titlet_titlefld-value="field_name"Alternative: f_value="field_name"Writes the value into the value attribute of input/select — for defaulting form inputs from admin-editable copy.
fld-valuef_valueopt-valueo_valuetax-valuet_valuefld-video="field_name"Alternative: f_video="field_name"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.
fld-videof_videoopt-videoo_videotax-videot_videofld-youtube="field_name"Alternative: f_youtube="field_name"YouTube video by URL — the generator inserts an embed iframe into the current element.
fld-youtubef_youtubeopt-youtubeo_youtubetax-youtubet_youtubeFields 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_metaCreates 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.
Show Editor (wp-show-editor)
Keep the WordPress text editor on a page with custom fields. A ThemeForge attribute (no alternative spelling)
wp-show-editorKeeps 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.
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.
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_ifConditional 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_setUniversal 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.
PHP Expression (wp-php)
An arbitrary PHP expression
wp-php="echo get_field(...)"Alternative: wp_phpRuns 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.
Echo PHP Expression (php-echo)
Print a PHP expression
php-echo="expression"Alternative: php_echoOutputs 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_ifConditional 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_beforeInserts raw PHP code immediately BEFORE the element — for setup logic, opening control structures, or variable assignments that wrap the element.
php-after="php code"Alternative: php_afterInserts raw PHP code immediately AFTER the element — pairs with php-before to close control structures or run teardown logic.
php-insert="php code"Alternative: php_insertInserts PHP code INSIDE the element, replacing its children — the element keeps its tag and attributes but its content becomes the code's output.
php-replace="php code"Alternative: php_replaceReplaces the ENTIRE element (tag included) with the output of the PHP code — use when you need to swap the whole node for dynamic markup.
php-prepend="php code"Alternative: php_prependInserts PHP code at the START of the element's content — prepends the code output before the existing children.
php-append="php code"Alternative: php_appendInserts PHP code at the END of the element's content — appends the code output after the existing children.
Templates & Loading
wp-include="file_name" (no extension)Alternative: wp_includeInserts 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.
wp-part="slug"Alternative: wp_partExtracts 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.
wp-shortcode="[shortcode atr=val]"Alternative: wp_shortcodeExecutes a WordPress shortcode in place via do_shortcode() — embed plugin output (forms, sliders, WC blocks) anywhere in the layout.
wp-load="post_type"Alternative: wp_loadTurns the element into a «Load more» button that AJAX-loads the next page of the current query and appends results — infinite-scroll-style pagination.
wp-rotation="N"Alternative: wp_rotationA 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.
wp-template-cpt="post_type"Alternative: wp_template_cptBinds 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).
wp-sidebar="sidebar_name"Alternative: wp_sidebarA 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.
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.
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.
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.
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.
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.
wp="post-link"Alternative: wp="post_link"Permalink of the current post, written into href. Works on any element, usually an <a>.
wp="post-author"Alternative: wp="post_author"Author display name. By default the author is the user who published the post.
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.
wp="post-tags"Alternative: wp="post_tags"Tags of the current post, comma-separated. Each tag is a link to its own archive.
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.
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.
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.
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.
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.
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.
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.
wp="post-lbox-image"Alternative: wp="post_lbox_image"Post thumbnail as a lightbox link — <img> is wrapped in <a href> with lightbox attributes.
wp="site-name"Alternative: wp="site_name"Alias for bloginfo-name — the site title from WP settings.
wp="site-desc"Alternative: wp="site_desc"Alias for bloginfo-description — the site tagline from WP settings.
wp="breadcrumbs"Breadcrumbs via the Breadcrumb NavXT plugin — the trail from the home page to the current page. Requires the plugin active.
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).
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_queryTurns 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_paginateRenders pagination links for archives and search results via paginate_links(). Parameters (mid_size, end_size, prev/next text…) are passed in the value.
wp-paginate-query="query_name"Alternative: wp_paginate_queryPagination 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.
wp-query-name="query-preset-name"Alternative: wp_query_nameRuns 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.
wp-product-query="get_related_products(4)" / "get_upsell_products(4)" / any PHP expression returning WP_Query argsAlternative: wp_product_queryA WooCommerce loop over the results of a custom product query — related, upsell, cross-sell, or recently-viewed products. Carries WC product context inside.
wp-select="query_name"Alternative: wp_selectBuilds a <select> from the results of a named query or an ACF repeater — useful for dynamically populated dropdowns.
Post Content & Meta
wp-post-id="prefix"Alternative: wp_post_idOutputs 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.
wp-post-time="format"Alternative: wp_post_timeOutputs the publish time of the current post via get_the_time(). Respects the site's date/time format settings. Must run inside The Loop.
wp-post-terms="taxonomy"Alternative: wp_post_termsLists 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.
wp-post-term-desc="taxonomy"Alternative: wp_post_term_descOutputs the description text of the post's first term in the given taxonomy. Useful for showing a short blurb under a category label.
wp-post-term-link="taxonomy"Alternative: wp_post_term_linkSets 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.
wp-post-term-query="taxonomy"Alternative: wp_post_term_queryLoops 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.
wp-post-term-path="taxonomy"Alternative: wp_post_term_pathRenders 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.
wp-count="singular, plural, plural (many)"Alternative: wp_countOutputs a pluralised label with the result count — e.g. «12 products» / «1 product» — choosing the correct grammatical form for the number.
wp-attr-meta="Attribute name"Alternative: wp_attr_metaLoops over a product's custom (non-taxonomy) WooCommerce attributes — the per-product attributes defined directly on the product rather than as global pa_* taxonomies.
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_termThe 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.
Comments
wp-comment-formAlternative: wp_comment_formRenders the WordPress comment form for the current post via comment_form() — respects discussion settings and moderation rules.
wp-comment-listAlternative: wp_comment_listRenders the list of comments for the current post — threaded replies, author avatars, and dates per theme settings.
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_queryLoop 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.
Terms & Taxonomies
wp-term-path="taxonomy"Alternative: wp_term_pathRenders breadcrumbs for a taxonomy archive page — the ancestor chain of the currently queried term. Place it on the category/tag archive template.
wp-term-tree="taxonomy"Alternative: wp_term_treeRenders 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.
wp-term-query2="query parameters"Alternative: wp_term_query2Nested 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.
wp-term-query3="query parameters"Alternative: wp_term_query3Nested term loop, level 3 — the third level of a term hierarchy, nested inside a level-2 loop. Same auto-parent behaviour as level 2.
wp-term-select="preset-name"Alternative: wp_term_selectLoops 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.
wp-menu-tree="Menu name"Alternative: wp_menu_treeRenders 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.
Conditional Blocks
wp-has-term="taxonomy" / wp-has-term="taxonomy:term-slug"Alternative: wp_has_termConditional 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).
wp-has-not-term="taxonomy" / wp-has-not-term="taxonomy:term-slug"Alternative: wp_has_not_termConditional block — renders its contents only if the current post does NOT have a term in the given taxonomy. The inverse of wp-has-term.
wp-set-php="attribute: php code"Alternative: wp_set_phpSets an HTML attribute from a PHP expression — the value «name:php_code» becomes name="<result>" with the code evaluated and escaped at render.
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_attrOutputs 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).
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_attrConditional block in the cart context: render only when a cart item has the named attribute. The cart-row analogue of wp-if-attr.
WooCommerce Variations & Cart
wp-var-select="pa_attribute"Alternative: wp_var_selectA variation <select> for a WooCommerce variable-product attribute — populates options from the product's variations and drives the add-to-cart variation picker.
wp-cart-term="taxonomy"Alternative: wp_cart_termOutputs 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.
wp-cart-if-term="taxonomy:term" or wp-cart-if-term="term"Alternative: wp_cart_if_termConditional block inside a cart row — renders its contents only if the line-item product has the given taxonomy term.
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_termsLoop 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.
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_attrConditional block: render only when the current product has the named attribute. If the attribute is missing — the whole 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_stockConditional 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.
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_formTurns a Webflow form into a WooCommerce/WordPress filter form — submitting it filters the product/post archive by the contained fields (terms, ranges, search).
wp-range-slider="field_name"Alternative: wp_range_sliderA 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.
wp-range-min="suffix"Alternative: wp_range_minThe minimum-value input of a range filter — its value seeds the lower bound of the filter (and reflects the current $_GET value on reload).
wp-range-max="suffix"Alternative: wp_range_maxThe maximum-value input of a range filter — the upper bound, mirroring wp-range-min behaviour.
wp-checkbox-terms="taxonomy"Alternative: wp_checkbox_termsRenders 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.
wp-radio-terms="taxonomy"Alternative: wp_radio_termsRenders a radio-button list of taxonomy terms for a filter — single-select variant of wp-checkbox-terms.
wp-select-terms="taxonomy"Alternative: wp_select_termsRenders a <select> dropdown of taxonomy terms for a filter — the option list is populated from the taxonomy at render time.
pm__skuinput name — not an attributeA 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.
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.
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.
wp="wish-count"Alternative: wp="wish_count"/ wp="wl_count"Wishlist product count for the current user — updates on add/remove.
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.
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.
wp="wish-move"Alternative: wp="wish_move"/ wp_wl="move"Button «Move to cart» — adds to cart and removes from wishlist in one action.
wp="wish-remove"Alternative: wp="wish_remove"/ wp_wl="remove"Remove-from-wishlist button — usually a cross in the row.
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_attrWooCommerce 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_attrConditional 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_termTaxonomy 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_termConditional block: shown only if the product has a term of the taxonomy