## Получение Ссылки на Номер Страницы (GET_PAGENUM_LINK())
Функция get_pagenum_link()
позволяет получить ссылку на определённый номер страницы, что полезно при работе с пагинацией (разделением контента на страницы).
### Использование
Функция используется в следующих случаях:
- get_next_posts_page_link()
— для получения ссылки на следующую страницу.
- get_previous_posts_page_link()
— для получения ссылки на предыдущую страницу.
### Параметры Функции
```php
get_pagenum_link( $pagenum, $escape );
- $pagenum (int) — номер страницы. По умолчанию:
1
. - $escape (bool) — нужно ли избежать специальные символы в URL с помощью функции
esc_url()
. Если установить значениеfalse
, URL будет подготовлен с использованием функцииsanitize_url()
. По умолчанию:true
.
Возвращаемое Значение
Функция возвращает строку, содержащую URL-ссылку для указанного номера страницы.
Примеры Использования
Пример 1: Получение Ссылки на Определенную Страницу
echo get_pagenum_link( 4 );
// На главной странице:
// возвращает: http://example.com/page/4
// На странице: http://example.com/article
// возвращает: http://example.com/article/page/4
Пример 2: Изменение Ссылки Пагинации
Допустим, на главной странице необходимо добавить /article/
к ссылкам пагинации. То есть, менять http://example.com/page/1
на http://example.com/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;
static $site = '';
$site || $site = home_url();
$url = preg_replace( "@^$site/(.*)@", "$site/article/1", $url );
return $url;
}
Важные Заметки
- Глобальные Переменные: Использует компонент
WP_Rewrite
для работы с пермалинками. - История Изменений: Функция была представлена с версии 1.5.0.
Код Функции
Вот как выглядит реализация функции get_pagenum_link()
в WordPress:
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 );
$parts = array();
$parts[] = untrailingslashit( get_bloginfo( 'url' ) );
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, '/' );
if ( $wp_rewrite->using_index_permalinks() && ( $pagenum > 1 || '' !== $request ) ) {
$parts[] = $wp_rewrite->index;
}
$parts[] = untrailingslashit( $request );
if ( $pagenum > 1 ) {
$parts[] = $wp_rewrite->pagination_base;
$parts[] = $pagenum;
}
$result = user_trailingslashit( implode( '/', array_filter( $parts ) ), 'paged' );
if ( ! empty( $query_string ) ) {
$result .= $query_string;
}
}
$result = apply_filters( 'get_pagenum_link', $result, $pagenum );
if ( $escape ) {
return esc_url( $result );
} else {
return sanitize_url( $result );
}
}
Связанные Функции
edit_bookmark_link()
edit_comment_link()
get_attachment_link()
get_permalink()
get_sample_permalink()
get_tag_link()
get_term_link()
get_the_permalink()
the_permalink()
wp_get_shortlink()
Эти функции помогут вам лучше управлять URL-адресами и пагинацией в вашем WordPress сайте.