get_the_posts_pagination

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

WordPress Version: 6.1

/**
 * Retrieves a paginated 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 pagination arguments, see paginate_links().
 *
 *     @type string $screen_reader_text Screen reader text for navigation 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 'pagination'.
 * }
 * @return string Markup for pagination links.
 */
function get_the_posts_pagination($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('mid_size' => 1, 'prev_text' => _x('Previous', 'previous set of posts'), 'next_text' => _x('Next', 'next set of posts'), 'screen_reader_text' => __('Posts navigation'), 'aria_label' => __('Posts'), 'class' => 'pagination'));
        /**
         * Filters the arguments for posts pagination links.
         *
         * @since 6.1.0
         *
         * @param array $args {
         *     Optional. Default pagination arguments, see paginate_links().
         *
         *     @type string $screen_reader_text Screen reader text for navigation 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 'pagination'.
         * }
         */
        $args = apply_filters('the_posts_pagination_args', $args);
        // Make sure we get a string back. Plain is the next best thing.
        if (isset($args['type']) && 'array' === $args['type']) {
            $args['type'] = 'plain';
        }
        // Set up paginated links.
        $links = paginate_links($args);
        if ($links) {
            $navigation = _navigation_markup($links, $args['class'], $args['screen_reader_text'], $args['aria_label']);
        }
    }
    return $navigation;
}

WordPress Version: 5.5

/**
 * Retrieves a paginated 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.
 *
 * @param array $args {
 *     Optional. Default pagination arguments, see paginate_links().
 *
 *     @type string $screen_reader_text Screen reader text for navigation 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 'pagination'.
 * }
 * @return string Markup for pagination links.
 */
function get_the_posts_pagination($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('mid_size' => 1, 'prev_text' => _x('Previous', 'previous set of posts'), 'next_text' => _x('Next', 'next set of posts'), 'screen_reader_text' => __('Posts navigation'), 'aria_label' => __('Posts'), 'class' => 'pagination'));
        // Make sure we get a string back. Plain is the next best thing.
        if (isset($args['type']) && 'array' === $args['type']) {
            $args['type'] = 'plain';
        }
        // Set up paginated links.
        $links = paginate_links($args);
        if ($links) {
            $navigation = _navigation_markup($links, $args['class'], $args['screen_reader_text'], $args['aria_label']);
        }
    }
    return $navigation;
}

WordPress Version: 5.3

/**
 * Retrieves a paginated navigation to next/previous set of posts, when applicable.
 *
 * @since 4.1.0
 * @since 5.3.0 Added the `aria_label` parameter.
 *
 * @param array $args {
 *     Optional. Default pagination arguments, see paginate_links().
 *
 *     @type string $screen_reader_text Screen reader text for navigation element.
 *                                      Default 'Posts navigation'.
 *     @type string $aria_label         ARIA label text for the nav element. Default 'Posts'.
 * }
 * @return string Markup for pagination links.
 */
function get_the_posts_pagination($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('mid_size' => 1, 'prev_text' => _x('Previous', 'previous set of posts'), 'next_text' => _x('Next', 'next set of posts'), 'screen_reader_text' => __('Posts navigation'), 'aria_label' => __('Posts')));
        // Make sure we get a string back. Plain is the next best thing.
        if (isset($args['type']) && 'array' == $args['type']) {
            $args['type'] = 'plain';
        }
        // Set up paginated links.
        $links = paginate_links($args);
        if ($links) {
            $navigation = _navigation_markup($links, 'pagination', $args['screen_reader_text'], $args['aria_label']);
        }
    }
    return $navigation;
}

WordPress Version: 4.7

/**
 * Retrieves a paginated navigation to next/previous set of posts, when applicable.
 *
 * @since 4.1.0
 *
 * @param array $args {
 *     Optional. Default pagination arguments, see paginate_links().
 *
 *     @type string $screen_reader_text Screen reader text for navigation element.
 *                                      Default 'Posts navigation'.
 * }
 * @return string Markup for pagination links.
 */
function get_the_posts_pagination($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('mid_size' => 1, 'prev_text' => _x('Previous', 'previous set of posts'), 'next_text' => _x('Next', 'next set of posts'), 'screen_reader_text' => __('Posts navigation')));
        // Make sure we get a string back. Plain is the next best thing.
        if (isset($args['type']) && 'array' == $args['type']) {
            $args['type'] = 'plain';
        }
        // Set up paginated links.
        $links = paginate_links($args);
        if ($links) {
            $navigation = _navigation_markup($links, 'pagination', $args['screen_reader_text']);
        }
    }
    return $navigation;
}

WordPress Version: 4.6

/**
 * Retrieves a paginated navigation to next/previous set of posts, when applicable.
 *
 * @since 4.1.0
 *
 * @param array $args {
 *     Optional. Default pagination arguments, see paginate_links().
 *
 *     @type string $screen_reader_text Screen reader text for navigation element.
 *                                      Default 'Posts navigation'.
 * }
 * @return string Markup for pagination links.
 */
function get_the_posts_pagination($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('mid_size' => 1, 'prev_text' => _x('Previous', 'previous post'), 'next_text' => _x('Next', 'next post'), 'screen_reader_text' => __('Posts navigation')));
        // Make sure we get a string back. Plain is the next best thing.
        if (isset($args['type']) && 'array' == $args['type']) {
            $args['type'] = 'plain';
        }
        // Set up paginated links.
        $links = paginate_links($args);
        if ($links) {
            $navigation = _navigation_markup($links, 'pagination', $args['screen_reader_text']);
        }
    }
    return $navigation;
}

WordPress Version: 1.1

/**
 * Return a paginated navigation to next/previous set of posts,
 * when applicable.
 *
 * @since 4.1.0
 *
 * @param array $args {
 *     Optional. Default pagination arguments, {@see paginate_links()}.
 *
 *     @type string $screen_reader_text Screen reader text for navigation element.
 *                                      Default 'Posts navigation'.
 * }
 * @return string Markup for pagination links.
 */
function get_the_posts_pagination($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('mid_size' => 1, 'prev_text' => _x('Previous', 'previous post'), 'next_text' => _x('Next', 'next post'), 'screen_reader_text' => __('Posts navigation')));
        // Make sure we get a string back. Plain is the next best thing.
        if (isset($args['type']) && 'array' == $args['type']) {
            $args['type'] = 'plain';
        }
        // Set up paginated links.
        $links = paginate_links($args);
        if ($links) {
            $navigation = _navigation_markup($links, 'pagination', $args['screen_reader_text']);
        }
    }
    return $navigation;
}

WordPress Version: 4.1

/**
 * Return a paginated navigation to next/previous set of posts,
 * when applicable.
 *
 * @since 4.1.0
 *
 * @param array $args {
 *     Optional. Default pagination arguments, {@see paginate_links()}.
 *
 *     @type string $screen_reader_text Screen reader text for navigation element.
 *                                      Default 'Posts navigation'.
 * }
 * @return string Markup for pagination links.
 */
function get_the_posts_pagination($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('mid_size' => 1, 'prev_text' => __('Previous'), 'next_text' => __('Next'), 'screen_reader_text' => __('Posts navigation')));
        // Make sure we get a string back. Plain is the next best thing.
        if (isset($args['type']) && 'array' == $args['type']) {
            $args['type'] = 'plain';
        }
        // Set up paginated links.
        $links = paginate_links($args);
        if ($links) {
            $navigation = _navigation_markup($links, 'pagination', $args['screen_reader_text']);
        }
    }
    return $navigation;
}