Dynamic ContentDynamic Content Overview

Dynamic Content Overview

How Protuno adds dynamic content to Proton widgets, through Elementor dynamic tags for no-code binding and through Twig expressions for code-based data access.

Protuno gives you two ways to make a Proton widget's content dynamic, pulling live data from WordPress, WooCommerce, ACF, or external APIs instead of showing static text and images.

ApproachHow it worksWhen to use it
Elementor Dynamic TagsClick the dynamic data icon on a slot field and pick a tag from a dropdownBinding a single field to post data, user data, site info, or a custom field, no code
Twig ExpressionsWrite {{ post.title }} or {% for item in get_posts() %} inside the widget's HTMLComplex data access, filtering values, loops, conditions, or chaining providers

Both systems are powered by the same underlying data engine. Dynamic tags are a no-code interface to it; Twig expressions give you direct access.


Dynamic Tags: No-Code Data Binding

Elementor dynamic tags appear on every slot field in the Proton widget panel: every text field, every link URL, and every image picker has a database icon on the right edge. Click it to bind that field to a live data source.

Protuno registers 59 dynamic tags organized into groups:

GroupTagsPlan
Post (Title, Content, URL, Image)4Free
Post (ID, Excerpt, Date, Custom Field)4Pro
Site4Pro
Archive4Pro
User6Pro
Term5Pro
Twig Bridge3Free for post data, Pro for site/user/term expressions
WooCommerce22Pro + WooCommerce active
ACF4Pro + Advanced Custom Fields active
JetEngine3Pro + JetEngine active

See Dynamic Tags: Bind Content Without Code for the full tag reference.


Twig Expressions: Code-Based Data Access

Twig is the expression language Protuno uses inside the widget's HTML panel. Write {{ … }} for a value, {% if %} for a condition, and {% for %} for a loop.

7 data providers are available: post, product, user, term, image, site, and request. Providers are chainable, {{ post.author.name }} drills from the post to its author to their name. In the free version, only core post fields (title, content, URL, featured image) and the image chain resolve — site, user, term, and request providers require Pro.

22+ filters transform values inline: {{ post.date|date('M j, Y') }}, {{ post.title|upper }}, {{ post.excerpt|truncate(120) }}.

Loop sources: get_posts is available in Free. get_products, get_terms, get_users, and get_api (external JSON) require Pro. Loop pagination also requires Pro.

See Dynamic Data With Twig and Loops & Listings for full guides.


Structural Tags

Five <uichemy-*> HTML tags render whole WordPress blocks server-side:

TagWhat it renders
<uichemy-nav-menu>The active WordPress navigation menu
<uichemy-site-logo>The site logo, linked to the home page
<uichemy-site-icon>The site icon (favicon) linked to the home page
<uichemy-post-content>The current post's content (the WordPress editor output)
<uichemy-toc>A table of contents generated from the post's headings

These go directly in the HTML panel. They are not slot fields, they render full output blocks.


Dynamic Content In Templates

When a Proton widget that uses dynamic data is placed inside a Theme Builder template (a single post template, an archive page, etc.), every data binding automatically resolves to the current context:

  • On a single post page, {{ post.title }} shows that post's title
  • On a term archive, {{ archive.title }} shows the current term name
  • In a product template, {{ product.price }} shows the current product's price

One widget design serves all items. This is what makes Protuno's theme builder templates dynamic instead of just page copies.


Frequently Asked Questions

Do dynamic tags and Twig expressions work together? Yes. You can bind a slot to a dynamic tag via the panel UI, and in the same widget write Twig expressions in the HTML panel. They use the same engine.

Can I use Twig without knowing how to code? Basic Twig expressions like {{ post.title }} are straightforward. Loops and conditions require some familiarity with template syntax. For purely no-code data binding, use dynamic tags through the panel.

Does dynamic content work on cached pages? This depends on your caching configuration. Dynamic content that varies per-user (like logged-in user data) should be excluded from page caches. Content that is the same for all visitors (post title, featured image) is safe to cache.