get_archives_link( string $url, string $text, string $format = ‘html’, string $before = , string $after = , bool $selected = false ): string

Retrieves archive link content based on predefined or custom code.

Description

The format can be one of four styles. The ‘link’ for head element, ‘option’ for use in the select element, ‘html’ for use in list (either ol or ul HTML elements). Custom content is also supported using the before and after parameters.

The ‘link’ format uses the <link> HTML element with the archives relationship. The before and after parameters are not used. The text parameter is used to describe the link.

The ‘option’ format uses the option HTML element for use in select element.
The value is the url parameter and the before and after parameters are used between the text description.

The ‘html’ format, which is the default, uses the li HTML element for use in the list HTML elements. The before parameter is before the link and the after parameter is after the closing link.

The custom format uses the before parameter before the link (‘a’ HTML element) and the after parameter after the closing link tag. If the above three values for the format are not used, then custom format is assumed.

Parameters

$urlstringrequired
URL to archive.
$textstringrequired
Archive text description.
$formatstringoptional
Can be 'link', 'option', 'html', or custom. Default 'html'.

Default:'html'

$beforestringoptional
Content to prepend to the description.

Default:''

$afterstringoptional
Content to append to the description.

Default:''

$selectedbooloptional
Set to true if the current page is the selected archive page.

Default:false

Return

string HTML link content for archive.

Source

function get_archives_link( $url, $text, $format = 'html', $before = '', $after = '', $selected = false ) {
	$text         = wptexturize( $text );
	$url          = esc_url( $url );
	$aria_current = $selected ? ' aria-current="page"' : '';

	if ( 'link' === $format ) {
		$link_html = "\t<link rel='archives' title='" . esc_attr( $text ) . "' href='$url' />\n";
	} elseif ( 'option' === $format ) {
		$selected_attr = $selected ? " selected='selected'" : '';
		$link_html     = "\t<option value='$url'$selected_attr>$before $text $after</option>\n";
	} elseif ( 'html' === $format ) {
		$link_html = "\t<li>$before<a href='$url'$aria_current>$text</a>$after</li>\n";
	} else { // Custom.
		$link_html = "\t$before<a href='$url'$aria_current>$text</a>$after\n";
	}

	/**
	 * Filters the archive link content.
	 *
	 * @since 2.6.0
	 * @since 4.5.0 Added the `$url`, `$text`, `$format`, `$before`, and `$after` parameters.
	 * @since 5.2.0 Added the `$selected` parameter.
	 *
	 * @param string $link_html The archive HTML link content.
	 * @param string $url       URL to archive.
	 * @param string $text      Archive text description.
	 * @param string $format    Link format. Can be 'link', 'option', 'html', or custom.
	 * @param string $before    Content to prepend to the description.
	 * @param string $after     Content to append to the description.
	 * @param bool   $selected  True if the current page is the selected archive.
	 */
	return apply_filters( 'get_archives_link', $link_html, $url, $text, $format, $before, $after, $selected );
}

Hooks

apply_filters( ‘get_archives_link’, string $link_html, string $url, string $text, string $format, string $before, string $after, bool $selected )

Filters the archive link content.

Changelog

VersionDescription
5.2.0Added the $selected parameter.
1.0.0Introduced.

User Contributed Notes

  1. Skip to note 2 content

    Adds a span around post counts in the core archive widget. This allows for easy styling of the count number.

    /**
     * Adds a span around post counts in the archive widget.
     *
     * @param   string  $links      The comment fields.
     * @return  string
     */
    function wpdocs_archive_count_span( $links ) {
     	$links = str_replace( '</a>&nbsp;(', '<span class="count">', $links );
    	$links = str_replace( ')', '</span></a>', $links );
    	return $links;
    }
    add_filter( 'get_archives_link', 'wpdocs_archive_count_span' );

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