get_month_link( int|false $year, int|false $month ): string

Retrieves the permalink for the month archives with year.

Parameters

$yearint|falserequired
Integer of year. False for current year.
$monthint|falserequired
Integer of month. False for current month.

Return

string The permalink for the specified month and year archive.

More Information

In a Plugin or Theme, it can be used as early as the setup_theme Action. Any earlier usage, including plugins_loaded, generates a Fatal Error.

Source

function get_month_link( $year, $month ) {
	global $wp_rewrite;
	if ( ! $year ) {
		$year = current_time( 'Y' );
	}
	if ( ! $month ) {
		$month = current_time( 'm' );
	}
	$monthlink = $wp_rewrite->get_month_permastruct();
	if ( ! empty( $monthlink ) ) {
		$monthlink = str_replace( '%year%', $year, $monthlink );
		$monthlink = str_replace( '%monthnum%', zeroise( (int) $month, 2 ), $monthlink );
		$monthlink = home_url( user_trailingslashit( $monthlink, 'month' ) );
	} else {
		$monthlink = home_url( '?m=' . $year . zeroise( $month, 2 ) );
	}

	/**
	 * Filters the month archive permalink.
	 *
	 * @since 1.5.0
	 *
	 * @param string $monthlink Permalink for the month archive.
	 * @param int    $year      Year for the archive.
	 * @param int    $month     The month for the archive.
	 */
	return apply_filters( 'month_link', $monthlink, $year, $month );
}

Hooks

apply_filters( ‘month_link’, string $monthlink, int $year, int $month )

Filters the month archive permalink.

Changelog

VersionDescription
1.0.0Introduced.

User Contributed Notes

  1. Skip to note 6 content

    Use With PHP Variables

    PHP code block for use within The Loop: Assigns year and month of a post to the variables $arc_year and $arc_month. These are used with the get_month_link() tag, which returns the URL as a link to the monthly archive for that post, displaying it within an anchor tag with the PHP echo command. See Formatting Date and Time for info on format strings used in get_the_time() tag.

    <?php $archive_year  = get_the_time('Y'); ?>
    <?php $archive_month = get_the_time('m'); ?>
    
    <a href="<?php echo get_month_link( $archive_year, $archive_month ); ?>">
    Archive for <?php the_time('F Y'); ?>
    </a>

You must log in before being able to contribute a note or feedback.