Installing Dynamic Content, every setting it has, the screens it adds, and its 0 documented actions and filters. The full reference, including the arguments every hook receives, ships inside the plugin on its Documentation screen and in docs/HOOKS.md, so it can never describe a version you are not running.
What you need
- WordPress 6.4 or newer
- PHP 8.0 or newer
- No other plugin, service or account required
Installing it
- Open Plugins → Add New, search for Dynamic Content, install and activate it.
- Open its Status screen from the sidebar. It reports what is running, and it is the first place to look if something later seems not to be.
- That is the whole installation. Every setting has a working default, so nothing has to be configured before the plugin does its job.
Where everything is in wp-admin
- Slots is every value on the site a rule is allowed to change, each with the default a visitor sees otherwise.
- Rules is the ordered list of conditions, first match wins.
- Status reports what is live and shows the markup and shortcode for placing a slot.
- Settings holds the cookie name, retention, DOM watching and the debug panel.
- Documentation is the full reference, bundled with the plugin.
Settings
Every one of these has a default that works. The defaults below are the ones in the code, not a recommendation.
| Setting | Default | What it does |
|---|---|---|
cookie_name | wpdc_context | Name of the first party cookie the visitor context is kept in. |
retention_days | 30 | How long the context that decides which rule matches is remembered. Anywhere from 0 to 365. |
watch_dom | on | Keeps watching for content added after the page loaded, so a slot inside a popup or a lazily rendered block is still replaced. |
public_debug | off | Shows the front end debug panel to logged out visitors as well as to administrators. |
Actions and filters
Limits, classifications, tracked values and admin screens are all filterable, so extending this plugin does not mean forking it. Names and descriptions below are generated from the source.
A worked example
// Raise the free tier's limits, or lower them for an editor you do not trust.
add_filter( 'wpdc_slot_limit', fn( int $limit ): int => 20 );
add_filter( 'wpdc_rule_limit', fn( int $limit ): int => 40 );
// Decide the visitor's country yourself, from a header your CDN sets.
add_filter( 'wpdc_visitor_country', function ( string $country ): string {
return $_SERVER['HTTP_X_GEO_COUNTRY'] ?? $country;
} );
// React to a configuration import, for example to clear your own cache.
add_action( 'wpdc_import_completed', function ( array $slots, array $rules ): void {
wp_cache_flush();
}, 10, 2 );
If something is wrong
Check the Status screen, then the debug panel on the front end: between them they name what was captured, what matched and why. If that does not answer it, write to us and say what you expected instead. There is also the product page if you want to see the screens before installing anything.