get_the_posts_navigation

The timeline below displays how wordpress function get_the_posts_navigation has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.1

/**
 * Returns the navigation to next/previous set of posts, when applicable.
 *
 * @since 4.1.0
 * @since 5.3.0 Added the `aria_label` parameter.
 * @since 5.5.0 Added the `class` parameter.
 *
 * @global WP_Query $wp_query WordPress Query object.
 *
 * @param array $args {
 *     Optional. Default posts navigation arguments. Default empty array.
 *
 *     @type string $prev_text          Anchor text to display in the previous posts link.
 *                                      Default 'Older posts'.
 *     @type string $next_text          Anchor text to display in the next posts link.
 *                                      Default 'Newer posts'.
 *     @type string $screen_reader_text Screen reader text for the nav element.
 *                                      Default 'Posts navigation'.
 *     @type string $aria_label         ARIA label text for the nav element. Default 'Posts'.
 *     @type string $class              Custom class for the nav element. Default 'posts-navigation'.
 * }
 * @return string Markup for posts links.
 */
function get_the_posts_navigation($args = array())
{
    global $wp_query;
    $navigation = '';
    // Don't print empty markup if there's only one page.
    if ($wp_query->max_num_pages > 1) {
        // Make sure the nav element has an aria-label attribute: fallback to the screen reader text.
        if (!empty($args['screen_reader_text']) && empty($args['aria_label'])) {
            $args['aria_label'] = $args['screen_reader_text'];
        }
        $args = wp_parse_args($args, array('prev_text' => __('Older posts'), 'next_text' => __('Newer posts'), 'screen_reader_text' => __('Posts navigation'), 'aria_label' => __('Posts'), 'class' => 'posts-navigation'));
        $next_link = get_previous_posts_link($args['next_text']);
        $prev_link = get_next_posts_link($args['prev_text']);
        if ($prev_link) {
            $navigation .= '<div class="nav-previous">' . $prev_link . '</div>';
        }
        if ($next_link) {
            $navigation .= '<div class="nav-next">' . $next_link . '</div>';
        }
        $navigation = _navigation_markup($navigation, $args['class'], $args['screen_reader_text'], $args['aria_label']);
    }
    return $navigation;
}

WordPress Version: 5.5

/**
 * Returns the navigation to next/previous set of posts, when applicable.
 *
 * @since 4.1.0
 * @since 5.3.0 Added the `aria_label` parameter.
 * @since 5.5.0 Added the `class` parameter.
 *
 * @global WP_Query $wp_query WordPress Query object.
 *
 * @param array $args {
 *     Optional. Default posts navigation arguments. Default empty array.
 *
 *     @type string $prev_text          Anchor text to display in the previous posts link.
 *                                      Default 'Older posts'.
 *     @type string $next_text          Anchor text to display in the next posts link.
 *                                      Default 'Newer posts'.
 *     @type string $screen_reader_text Screen reader text for the nav element.
 *                                      Default 'Posts navigation'.
 *     @type string $aria_label         ARIA label text for the nav element. Default 'Posts'.
 *     @type string $class              Custom class for the nav element. Default 'posts-navigation'.
 * }
 * @return string Markup for posts links.
 */
function get_the_posts_navigation($args = array())
{
    $navigation = '';
    // Don't print empty markup if there's only one page.
    if ($GLOBALS['wp_query']->max_num_pages > 1) {
        // Make sure the nav element has an aria-label attribute: fallback to the screen reader text.
        if (!empty($args['screen_reader_text']) && empty($args['aria_label'])) {
            $args['aria_label'] = $args['screen_reader_text'];
        }
        $args = wp_parse_args($args, array('prev_text' => __('Older posts'), 'next_text' => __('Newer posts'), 'screen_reader_text' => __('Posts navigation'), 'aria_label' => __('Posts'), 'class' => 'posts-navigation'));
        $next_link = get_previous_posts_link($args['next_text']);
        $prev_link = get_next_posts_link($args['prev_text']);
        if ($prev_link) {
            $navigation .= '<div class="nav-previous">' . $prev_link . '</div>';
        }
        if ($next_link) {
            $navigation .= '<div class="nav-next">' . $next_link . '</div>';
        }
        $navigation = _navigation_markup($navigation, $args['class'], $args['screen_reader_text'], $args['aria_label']);
    }
    return $navigation;
}

WordPress Version: 5.3

/**
 * Returns the navigation to next/previous set of posts, when applicable.
 *
 * @since 4.1.0
 * @since 5.3.0 Added the `aria_label` parameter.
 *
 * @global WP_Query $wp_query WordPress Query object.
 *
 * @param array $args {
 *     Optional. Default posts navigation arguments. Default empty array.
 *
 *     @type string $prev_text          Anchor text to display in the previous posts link.
 *                                      Default 'Older posts'.
 *     @type string $next_text          Anchor text to display in the next posts link.
 *                                      Default 'Newer posts'.
 *     @type string $screen_reader_text Screen reader text for the nav element.
 *                                      Default 'Posts navigation'.
 *     @type string $aria_label         ARIA label text for the nav element. Default 'Posts'.
 * }
 * @return string Markup for posts links.
 */
function get_the_posts_navigation($args = array())
{
    $navigation = '';
    // Don't print empty markup if there's only one page.
    if ($GLOBALS['wp_query']->max_num_pages > 1) {
        // Make sure the nav element has an aria-label attribute: fallback to the screen reader text.
        if (!empty($args['screen_reader_text']) && empty($args['aria_label'])) {
            $args['aria_label'] = $args['screen_reader_text'];
        }
        $args = wp_parse_args($args, array('prev_text' => __('Older posts'), 'next_text' => __('Newer posts'), 'screen_reader_text' => __('Posts navigation'), 'aria_label' => __('Posts')));
        $next_link = get_previous_posts_link($args['next_text']);
        $prev_link = get_next_posts_link($args['prev_text']);
        if ($prev_link) {
            $navigation .= '<div class="nav-previous">' . $prev_link . '</div>';
        }
        if ($next_link) {
            $navigation .= '<div class="nav-next">' . $next_link . '</div>';
        }
        $navigation = _navigation_markup($navigation, 'posts-navigation', $args['screen_reader_text'], $args['aria_label']);
    }
    return $navigation;
}

WordPress Version: 4.6

/**
 * Returns the navigation to next/previous set of posts, when applicable.
 *
 * @since 4.1.0
 *
 * @global WP_Query $wp_query WordPress Query object.
 *
 * @param array $args {
 *     Optional. Default posts navigation arguments. Default empty array.
 *
 *     @type string $prev_text          Anchor text to display in the previous posts link.
 *                                      Default 'Older posts'.
 *     @type string $next_text          Anchor text to display in the next posts link.
 *                                      Default 'Newer posts'.
 *     @type string $screen_reader_text Screen reader text for nav element.
 *                                      Default 'Posts navigation'.
 * }
 * @return string Markup for posts links.
 */
function get_the_posts_navigation($args = array())
{
    $navigation = '';
    // Don't print empty markup if there's only one page.
    if ($GLOBALS['wp_query']->max_num_pages > 1) {
        $args = wp_parse_args($args, array('prev_text' => __('Older posts'), 'next_text' => __('Newer posts'), 'screen_reader_text' => __('Posts navigation')));
        $next_link = get_previous_posts_link($args['next_text']);
        $prev_link = get_next_posts_link($args['prev_text']);
        if ($prev_link) {
            $navigation .= '<div class="nav-previous">' . $prev_link . '</div>';
        }
        if ($next_link) {
            $navigation .= '<div class="nav-next">' . $next_link . '</div>';
        }
        $navigation = _navigation_markup($navigation, 'posts-navigation', $args['screen_reader_text']);
    }
    return $navigation;
}

WordPress Version: 4.1

/**
 * Return navigation to next/previous set of posts when applicable.
 *
 * @since 4.1.0
 *
 * @global WP_Query $wp_query WordPress Query object.
 *
 * @param array $args {
 *     Optional. Default posts navigation arguments. Default empty array.
 *
 *     @type string $prev_text          Anchor text to display in the previous posts link.
 *                                      Default 'Older posts'.
 *     @type string $next_text          Anchor text to display in the next posts link.
 *                                      Default 'Newer posts'.
 *     @type string $screen_reader_text Screen reader text for nav element.
 *                                      Default 'Posts navigation'.
 * }
 * @return string Markup for posts links.
 */
function get_the_posts_navigation($args = array())
{
    $navigation = '';
    // Don't print empty markup if there's only one page.
    if ($GLOBALS['wp_query']->max_num_pages > 1) {
        $args = wp_parse_args($args, array('prev_text' => __('Older posts'), 'next_text' => __('Newer posts'), 'screen_reader_text' => __('Posts navigation')));
        $next_link = get_previous_posts_link($args['next_text']);
        $prev_link = get_next_posts_link($args['prev_text']);
        if ($prev_link) {
            $navigation .= '<div class="nav-previous">' . $prev_link . '</div>';
        }
        if ($next_link) {
            $navigation .= '<div class="nav-next">' . $next_link . '</div>';
        }
        $navigation = _navigation_markup($navigation, 'posts-navigation', $args['screen_reader_text']);
    }
    return $navigation;
}