Shortcodes showing as plain text in titles
Cause: The dmyip_core_filters filter may be disabling title processing, or another plugin/theme is interfering.
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] → 2126
Shortcodes 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"] → 2240
REST 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-autoloader
Shortcodes 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