Automate your SEO.
Take your blog to the next level.

Dynamic Month & Year into Posts

Add Dynamic Month, Date and Year to Post Content, Title and Meta using Shortcode.

Add the current year by [year] and current month by [month] shortcodes anywhere, including content, title, meta title, excerpt and breadcrumbs. Other shortcodes that you can use are [mon], [date], [nyear] and [pyear], and so on.

Dynamic Month & Year into Posts

Description

Automate your SEO

Add today’s date by [date], current year by [year], previous year by [pyear], next year by [nyear], current month (like January) by [month] and current month shortname (like Jan) by [mon] shortcodes anywhere, including content and title. Use this plugin to boost your site’s SEO by using the variables anywhere.

  • Supports RankMath, Yoast and SEOPress plugins and can be used to replace all their date based variables.
  • [year] works as a replacement to %currentyear% , [month] as a replacement to %currentmonth% already.
  • Use various combinations to make your articles even more dynamic and make your content always SEO ready — no matter the date or year.

Supports

  • Rank Math
  • Rank Math Pro
  • SEOPress
  • SEOPress Premium
  • Yoast SEO
  • Yoast SEO Premium

Tested to be working with Yoast SEO, SEOPress and Rank Math’s breadcrumbs, custom meta titles, excerpt etc.

Rankmath SEO plugin is (very) recommended but not required.

More features

  • Full Rank Math OpenGraph Support.
  • Schema and OpenGraph support in YoastSEO.
  • Multiple Langauge (WPML) Support: Shortcode renders your site’s defined language.
  • Contextual Related Posts Support
  • Totally native. No configuration required.

Easy to use

Just install the plugin (see Installation) and activate it. Add [year] to render current year, [nyear] to render next year, [pyear] to render previous year, [month] to render current month (full name) and [mon] to render first three letters of months automatically. As the months & years change, these shortcodes get updated into the content and title automatically on the shortcode locations.

Zero bloat. No CSS/JS files loaded.

More details | 24X7 Support | More WordPress Plugins | Request a Feature

Privacy

Dynamic Month & Year into Posts is a completely native shortcode plugin. It has no settings page and does not use any analytics tool to gather or use your data. It’s bloat and ad-free.

Fast Support and Feature Implementation

I will provide instant support for all your queries or feature requests. Use support forum to ask your questions, request new features or report something broken.

I will try my best to ensure that this plugin is compatible with every functionality plugin you use.

How to use it?

Just install the plugin (see Installation tab) and activate it. Add [year] to render current year, [nyear] to render next year, [pyear] to render previous year and [month] to render current month automatically. As the months & years change, they get updated into the content and title automatically on the shortcode locations. There are other shortcodes as well.

Installation

  1. Upload the plugin folder to the /wp-content/plugins/ directory, or install the plugin through the WordPress plugins screen directly.
  2. Activate the plugin through the ‘Plugins’ screen in WordPress
  3. There is no additional configuration required. There will not be any menus or settings for this plugin.

Shortcodes

  • Add today’s date by [date]. Output: September 26, 2022
  • Current year by [year]. Output: 2022
  • Previous year by [pyear]. Output: 2021
  • 2 years back from this year [ppyear] (read previous-previous year). Output: 2020
  • Next year by [nyear]. Output: 2023
  • 2 years from this year [nnyear] (read next-next year). Output: 2024
  • Current month (September) by [month]
  • Next month (like October) by [nmonth]
  • Previous month (like August) by [pmonth]
  • Current month shortname (like Sep) by [mon]
  • Next month shortname (like Oct) by [nmon]
  • Previous month shortname (like Aug) by [pmon]
  • Current month in number with trailing zero (like 09) by [mm]
  • Current month in number without trailing zero (like 9) by [mn]
  • [dt] shortcode renders only the day of the month (like 1, 2, 3, 17, 28); Mix this with other variables to create a custom date format.
  • Show current month and year together (like September 2022) by [monthyear]. Note: [monthyear] shortcode renders next month if the current month is about to end, after 28th every month.
  • Capitalize a month name by prefixing c to the shortcodes, like [cmonth], [cnmonth], [cmon] and so on.
  • [weekday] for today’s day of the week like Monday and [wd] for the short form of the day like Mon.

Screenshots

screenshot 1
screenshot 2

Changelog

VersionChanges
1.2.9Readme update.
1.2.8Fixed some issues related to rendering of next month.
[monthyear] no longer prints next month after 28th. Reason: User experience, as the user may be tricked to thinking the wrong current month and year names.
1.2.7Fix: [monthyear] shortcode rendered English months in other languages.
1.2.6New: Full Elementor Support. Now the shortcodes should render in all core and Elementor Pro widgets
1.2.5New shortcodes: [weekday] for today’s day of the week and [wd] for the short form of the day.
1.2.4Added: JSON-LD support for Yoast SEO Schema. Props to @sathoro
Upcoming: Intelly Inline Related Posts Plugin support
1.2.3Improved: [monthyear] shortcode renders next month if the current month is about to end, after 28th every month.
1.2.2New: Capitalize Month Names. Add c before any month based shortcode to render it capitalized. Useful in various languages where Month names are generally in small letters, like French, Swedish etc.
Example shortcodes: [cmonth], [cmon], [cnmonth], [cpmonth], [cnmon], [cpmon] etc.
New Shortcodes: [nnyear] and [ppyear] show 2 years next and previous years, like 2024 and 2020 respectively.
New Shortcode: [monthyear] shows current month and year together for specific purposes.
Better compatibility with Rank Math Pro and Elementor.
1.2.1New Shortcodes: [mm] renders month number including trailing zero (01-12)
New Shortcodes: [mn] renders month number without trailing zero (1-12)
Full Jetpack Related Posts Support (Thanks Jetpack team!)
1.2.0WordPress 5.8 Support
New Shortcode: [nmonth] renders next month (full name)
New Shortcode: [pmonth] renders previous month (full name)
New Shortcode: [nmon] renders next month (short name, like Jan, Feb)
New Shortcode: [pmon] renders previous month (short name, like Dec, Nov)
1.1.9IMPROVED! Performance by removing rank_math/paper/auto_generated_description/apply_shortcode; the filter that causes more load on sites, especially where wp_query is used.
This is the first of many attempts to remove unnecessary elements.
1.1.8Revert some of the changes in 1.1.6
1.1.7Bug fixes.
1.1.6NEW! [dt] shortcode to render only the day of the month (like 1, 2, 3, 17, 28). Combine this with other shortcodes to create date formats you desire.
Added support for shortcodes in Rank Math’s Product schema description
IMPROVED! [date] shortcode renders date as set by Dashboard -> Settings -> General -> Date.
1.1.5New: [mon] shortcode to render only the first three letters of the Month, like Jan, Feb, Mar, Apr etc.
1.1.4Tested with WordPress 5.8
1.1.3Bug Fixes {not really: I made a coding mistake}
1.1.2Updated Readme.txt and Instructions
1.1.1Bug fixes
1.1.0New: Rank Math OpenGraph SupportBug fixes
1.0.9Improved: Schema and OpenGraph support in YoastSEO.
Work in Progress: Full Schema and OpenGraph support in Rank Math
Removed: Rank Math recommendation.
1.0.8New: Contextual Related Posts Support
1.0.7New: SEOPress Support
1.0.6New: Yoast SEO Support
1.0.5Multiple Language Support: Shortcode renders your site’s defined language.
New: [date] shortcode for today’s date.
WordPress 5.6 Compatibility
1.0.4Optimization
1.0.3Updated Readme.txt file
1.0.2[pyear] yields previous year (e.g., 2021
[nyear] yields next year (e.g., 2023)
1.0.1Fixed Name Conflicts
1.0.0First version

FAQs

Why would I need this?

If you are an affiliate marketer or blogger who uses months, years and dates in your posts. If you use this plugin to render dynamic month, year, date, next year, and previous year shortcodes, you won’t have to update those posts again and again as time passes.

How can I access settings?

You cannot. There is no options panel because there is no need to have one. Why bloat the WordPress dashboard with more options?

Can I use it in Block Editor or Classic Editor?

Like running text, you can use the shortcodes in both Block Editor and Classic Editor. You can also use the shortcodes in widget areas, including the footer (use-case: Autoupdating Copyright Year) and headers (use-case: Today’s Date).

Will this plugin work in my language?

Yes. The shortcode outputs are WPML ready and render as per the language set in your WordPress dashboard. Since there is no settings page, you don’t have to translate this plugin.

How can I use these shortcodes in my theme/PHP code?

Yes. You can use <?php echo do_shortcode('[year]');?>, <?php echo do_shortcode('[month]');?> etc., in themes or in functionality plugins to use these shortcodes.

How can I render shortcodes in ACF fields?

This plugin doesn’t render shortcodes in ACF fields by default (due to various reasons, security being the first). But if you really need to render [year] etc., shortcodes, you can enable selective rendering.
Just add this code in your theme’s functions.php file or in the Code Snippets plugin:
ACF field type => text
add_filter('acf/format_value/type=text', 'do_shortcode');
ACF field name => headline
add_filter('acf/format_value/name=headline', 'do_shortcode');

Important Hooks and Filters

Enable shortcode rendering in Advanced Custom Fields areas

add_filter('acf/format_value/type=text', 'do_shortcode');

Disable rendering of shortcodes in Preformatted and Code blocks

<?php

function dmyip_replace_shortcode($string) {
    $replace = array( '[' => '[', ']' => ']' );
    $newstring = str_replace( array_keys( $replace ), array_values( $replace ), $string[2] );
    return $string[1] . $newstring . $string[3];
}
function dmyip_prevent_shortcode( $content ) {
	$pattern = '#(<pre.*?>|<code.*?>)(.*?)(<\/pre>|<\/code>)#imsu';
	return preg_replace_callback( $pattern, 'dmyip_replace_shortcode', $content );
}
add_filter( 'the_content', 'dmyip_prevent_shortcode', 9);