Shortcodes showing as plain text in titles
Cause: The dmyip_core_filters filter may be disabling title processing, or another plugin/theme is interfering.
A shortcode not working in WordPress almost always means one of four things: the context isn’t processed, another plugin interferes, caching serves stale output, or the shortcode is misspelled. This lesson works through each with the fastest diagnostic for the date shortcodes specifically.
Fix: Check your theme’s functions.php for any filters modifying dmyip_core_filters. The default behavior enables shortcodes in titles. You can verify by adding this temporarily:
add_filter( 'dmyip_core_filters', function ( $filters ) {
error_log( 'dmyip_core_filters: ' . print_r( $filters, true ) );
return $filters;
} );Shortcodes not working in Elementor
Cause: Elementor integration loads automatically when Elementor is active.
Fix:
- Verify the plugin is active
- Clear Elementor’s cache (Elementor > Tools > Regenerate CSS & Data)
- Check if another plugin is unhooking the
elementor/widget/render_contentfilter
Age shows “0”
Cause: Invalid date format or date in the future.
Fix: Use ISO 8601 format (YYYY-MM-DD):
[age date="1990-05-15"] ✓ Correct
[age date="05/15/1990"] ✗ May not parse correctly
[age date="May 15, 1990"] ✗ Use ISO format
[age date="2090-01-01"] → Returns 0 (future date)[year] with offset shows wrong value
Cause: Versions before 1.7.1 used strtotime() for year offset calculation, which failed with large offsets.
Fix: Update to v1.7.1+. The shortcode now uses pure integer arithmetic:
[year n=-2003] → 23 (was broken in older versions)
[year n=100] → 2126Shortcodes in REST API responses show raw text
Cause: Post content returned by the WordPress REST API runs through the_content, which processes shortcodes. If you see raw shortcodes, the plugin may not be active.
Fix:
- Verify the plugin is active
- For titles: the plugin hooks into
the_title, which the REST API also uses - For custom endpoints: wrap content with
do_shortcode()in your code
Countdown shows “0” instead of negative number
Expected behavior. [daysuntil] returns 0 when the target date has passed (never negative). Use [dayssince] for past dates:
[daysuntil date="2020-01-01"] → 0 (past date, clamped to 0)
[dayssince date="2020-01-01"] → 2240REST API / WP-CLI commands not available
Cause: These features require the modern loading path (vendor/autoload.php).
Fix: Ensure the plugin was installed with the vendor/ directory included. If installed from the WordPress.org ZIP or GitHub release, vendor is included. If cloned from git, run:
composer install --no-dev --optimize-autoloaderShortcodes stripped from excerpts
Cause: WordPress’s strip_shortcodes() function removes shortcodes from auto-generated excerpts.
Fix: The plugin already hooks into strip_shortcodes_tagnames to protect its shortcodes. If this isn’t working:
- Verify no other plugin is overriding
strip_shortcodes_tagnames - Check that
the_excerptfilter is enabled indmyip_core_filters
Season shows wrong value
Cause: Seasons are based on calendar months, not astronomical dates (equinoxes/solstices).
Northern hemisphere:
- Spring: March – May
- Summer: June – August
- Autumn: September – November
- Winter: December – February
Southern hemisphere: Use [season region="south"] for reversed seasons.
Performance concerns
The plugin has minimal performance impact:
- Zero database queries for shortcode rendering
- All output generated using PHP native date functions (
date_i18n(),gmdate(),strtotime()) - Only asset loaded: small CSS file in Block Editor for shortcode highlighting
- No JavaScript on the frontend (except the Countdown block’s Interactivity API module)
- No settings page, no options table entries, no admin AJAX calls
Block Bindings not working
Requirements:
- WordPress 6.5 or later
- Modern loading path active (
vendor/autoload.phpmust exist)
Fix: Verify your WordPress version with wp core version. Block Bindings API was introduced in WP 6.5.
Conflicts with caching plugins
Shortcodes render server-side at page generation time. If a caching plugin serves a stale page, the dates won’t update until the cache is cleared.
Fix:
- Configure cache expiration to clear daily (or at your desired freshness interval)
- For the Live Countdown block, this isn’t an issue – it updates client-side via the Interactivity API
- For pages with
[daysuntil]or time-sensitive content, consider shorter cache TTLs
Quick answers to common questions:
Why does 2026 show as plain text in my title?
Title processing is disabled via dmyip_core_filters, or a theme builds titles through a custom function that skips the filter. Test with a default theme first; if it renders there, the lesson’s theme-conflict section has the fix.
Dates are stuck on yesterday’s value. Why?
Page caching: the cached HTML froze the rendered value. Date output changes at midnight, so set cache lifetimes under 24 hours or exclude date-sensitive pages. The plugin renders correctly; the cache is replaying history.