wppaste
WordPress

wp_link_pages( string|array $args = '' ): string

Since
1.2.0, 5.1.0
Source
wp-includes/post-template.php:958
The formatted output of a list of pages.

Description

Displays page links for paginated posts (i.e. including the <!--nextpage--> Quicktag one or more times). This tag must be within The Loop.

Parameters

$argsstring|arrayoptional
Array or string of default arguments.Default: ''
  • $beforestringdefault: is <p> Pages:

    HTML or text to prepend to each link.
  • $afterstringdefault: is </p>

    HTML or text to append to each link.
  • $link_beforestringdefault: empty

    HTML or text to prepend to each link, inside the <a> tag. Also prepended to the current item, which is not linked.
  • $link_afterstringdefault: empty

    HTML or text to append to each Pages link inside the <a> tag. Also appended to the current item, which is not linked.
  • $aria_currentstringdefault: is 'page'

    The value for the aria-current attribute. Possible values are 'page', 'step', 'location', 'date', 'time', 'true', 'false'.
  • $next_or_numberstringdefault: is 'number'

    Indicates whether page numbers should be used. Valid values are number and next.
  • $separatorstringdefault: is ' '

    Text between pagination links.
  • $nextpagelinkstringdefault: is 'Next Page'

    Link text for the next page link, if available.
  • $previouspagelinkstringdefault: is 'Previous Page'

    Link text for the previous page link, if available.
  • $pagelinkstring

    Format string for page numbers. The % in the parameter string will be replaced with the page number, so 'Page %' generates "Page 1", "Page 2", etc. Defaults to '%', just the page number.
  • $echoint|booldefault: 1|true

    Whether to echo or not. Accepts 1|true or 0|false.

Return

string
Formatted output in HTML.

Hooks fired · 5

5 hooks fire while wp_link_pages() runs, in this order:

  1. apply_filters( wp_link_pages_args )filterline 985 (+27 into the body)

    Filters the arguments used in retrieving page links for paginated posts.

  2. apply_filters( wp_link_pages_link )filterline 1008 (+50 into the body)

    Filters the HTML output of individual page number links.

  3. apply_filters( wp_link_pages_link )filterline 1022 (+64 into the body)

    Filters the HTML output of individual page number links.

  4. apply_filters( wp_link_pages_link )filterline 1032 (+74 into the body)

    Filters the HTML output of individual page number links.

  5. apply_filters( wp_link_pages )filterline 1047 (+89 into the body)

    Filters the HTML output of page links for paginated posts.

Uses · 5

Used by · 2

Source

function wp_link_pages( $args = '' ) {	global $page, $numpages, $multipage, $more; 	$defaults = array(		'before'           => '<p class="post-nav-links">' . __( 'Pages:' ),		'after'            => '</p>',		'link_before'      => '',		'link_after'       => '',		'aria_current'     => 'page',		'next_or_number'   => 'number',		'separator'        => ' ',		'nextpagelink'     => __( 'Next page' ),		'previouspagelink' => __( 'Previous page' ),		'pagelink'         => '%',		'echo'             => 1,	); 	$parsed_args = wp_parse_args( $args, $defaults ); 	/**	 * Filters the arguments used in retrieving page links for paginated posts.	 *	 * @since 3.0.0	 *	 * @param array $parsed_args An array of page link arguments. See wp_link_pages()	 *                           for information on accepted arguments.	 */	$parsed_args = apply_filters( 'wp_link_pages_args', $parsed_args ); 	$output = '';	if ( $multipage ) {		if ( 'number' === $parsed_args['next_or_number'] ) {			$output .= $parsed_args['before'];			for ( $i = 1; $i <= $numpages; $i++ ) {				$link = $parsed_args['link_before'] . str_replace( '%', $i, $parsed_args['pagelink'] ) . $parsed_args['link_after']; 				if ( $i !== $page || ! $more && 1 === $page ) {					$link = _wp_link_page( $i ) . $link . '</a>';				} elseif ( $i === $page ) {					$link = '<span class="post-page-numbers current" aria-current="' . esc_attr( $parsed_args['aria_current'] ) . '">' . $link . '</span>';				} 				/**				 * Filters the HTML output of individual page number links.				 *				 * @since 3.6.0				 *				 * @param string $link The page number HTML output.				 * @param int    $i    Page number for paginated posts' page links.				 */				$link = apply_filters( 'wp_link_pages_link', $link, $i ); 				// Use the custom links separator beginning with the second link.				$output .= ( 1 === $i ) ? ' ' : $parsed_args['separator'];				$output .= $link;			}			$output .= $parsed_args['after'];		} elseif ( $more ) {			$output .= $parsed_args['before'];			$prev    = $page - 1;			if ( $prev > 0 ) {				$link = _wp_link_page( $prev ) . $parsed_args['link_before'] . $parsed_args['previouspagelink'] . $parsed_args['link_after'] . '</a>'; 				/** This filter is documented in wp-includes/post-template.php */				$output .= apply_filters( 'wp_link_pages_link', $link, $prev );			}			$next = $page + 1;			if ( $next <= $numpages ) {				if ( $prev ) {					$output .= $parsed_args['separator'];				}				$link = _wp_link_page( $next ) . $parsed_args['link_before'] . $parsed_args['nextpagelink'] . $parsed_args['link_after'] . '</a>'; 				/** This filter is documented in wp-includes/post-template.php */				$output .= apply_filters( 'wp_link_pages_link', $link, $next );			}			$output .= $parsed_args['after'];		}	}

History

Introduced in 1.2.0. Unchanged from 6.7.7 through 7.1.0.

  1. 6.7.7
  2. 6.8.8
  3. 6.9.7
  4. 7.0.4
  5. 7.1.0

Signature, return type and hooks compared across 5 parsed releases.

5.1.0
Added the aria_current argument.from the docblock
1.2.0
Introduced.from the docblock

About this page

Parsed data
Generated from the wordpress-develop 7.0.4 tag, from src/wp-includes/post-template.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it.
Corrections
Something wrong on this page? Report it and it gets fixed in the next regeneration.