get_pagenum_link

Получает УРЛ на страницу пагинации. Номер страницы указывается в в параметре $pagenum. Если $pagenum=2, то получим УРЛ на вторую страницу пагинации.

get_pagenum_link() выводит ссылку на страницу пагинации, соответствующую текущему запросу (архив, автор и т.д.).

Хуки из функции:
get_pagenum_link
Возвращает

Строку: URL.

Использование

get_pagenum_link( $pagenum, $escape );

Шаблон использования

$page_url = get_pagenum_link($pagenum, $escape);
$pagenum(число)
Ссылку на какую страницу пагинации надо получить.
По умолчанию: 1
$escape(логический)
Обрабатывать ли УРЛ функцией esc_url(), в противном случае ссылка будет обработана функцией esc_url_raw().
По умолчанию: true

Примеры

#1. Допустим мы используем функцию на главной странице:

echo get_pagenum_link(4);

// вернет: http://site.ru/page/4

// На странице http://site.ru/article
// вернет: http://site.ru/article/page/4

#2. Изменим ссылку пагинации

Допустим на на главной странице is_home() нужно добавить /article/ в ссылки пагинации, т.е. из http://site.ru/page/1 нужно сделать http://site.ru/article/page/1:

add_filter('get_pagenum_link', 'edit_paginate_url_for_home_page');
function edit_paginate_url_for_home_page($url){
	if( !is_home() || is_paged() )
		return;

	$site = home_url();
	$add = 'article';
	$url = preg_replace("@$site/(.*)@", "$site/$add/\1", $url);
	return $url;
}

Заметки

Использует хук “get_pagenum_link” прямо перед выводом URL.

Код из


wp-includes/link-template.php

WP 4.7.2

<?php
function get_pagenum_link($pagenum = 1, $escape = true ) {
	global $wp_rewrite;

	$pagenum = (int) $pagenum;

	$request = remove_query_arg( 'paged' );

	$home_root = parse_url(home_url());
	$home_root = ( isset($home_root['path']) ) ? $home_root['path'] : '';
	$home_root = preg_quote( $home_root, '|' );

	$request = preg_replace('|^'. $home_root . '|i', '', $request);
	$request = preg_replace('|^/+|', '', $request);

	if ( !$wp_rewrite->using_permalinks() || is_admin() ) {
		$base = trailingslashit( get_bloginfo( 'url' ) );

		if ( $pagenum > 1 ) {
			$result = add_query_arg( 'paged', $pagenum, $base . $request );
		} else {
			$result = $base . $request;
		}
	} else {
		$qs_regex = '|?.*?$|';
		preg_match( $qs_regex, $request, $qs_match );

		if ( !empty( $qs_match[0] ) ) {
			$query_string = $qs_match[0];
			$request = preg_replace( $qs_regex, '', $request );
		} else {
			$query_string = '';
		}

		$request = preg_replace( "|$wp_rewrite->pagination_base/d+/?$|", '', $request);
		$request = preg_replace( '|^' . preg_quote( $wp_rewrite->index, '|' ) . '|i', '', $request);
		$request = ltrim($request, '/');

		$base = trailingslashit( get_bloginfo( 'url' ) );

		if ( $wp_rewrite->using_index_permalinks() && ( $pagenum > 1 || '' != $request ) )
			$base .= $wp_rewrite->index . '/';

		if ( $pagenum > 1 ) {
			$request = ( ( !empty( $request ) ) ? trailingslashit( $request ) : $request ) . user_trailingslashit( $wp_rewrite->pagination_base . "/" . $pagenum, 'paged' );
		}

		$result = $base . $request . $query_string;
	}

	/**
	 * Filters the page number link for the current request.
	 *
	 * @since 2.5.0
	 *
	 * @param string $result The page number link.
	 */
	$result = apply_filters( 'get_pagenum_link', $result );

	if ( $escape )
		return esc_url( $result );
	else
		return esc_url_raw( $result );
}