get_pagenum_link() WP 1.5.0

Отримує УРЛ на сторінку пагінації, що відповідає поточному запиту (архів, автор і т.д.).

Номер сторінки вказується у параметрі $pagenum , наприклад $pagenum=2 отримає УРЛ на другу сторінку пагінації.

Хуки з функції

Повертає

Строку. URL.

Використання

get_pagenum_link($pagenum, $escape);
$pagenum
(число)
Посилання яку сторінку пагінації треба отримати.


За замовчуванням: 1
$escape
(true|false)
Чи обробляти УРЛ функцією
esc_url() , інакше посилання буде оброблено функцією
esc_url_raw() .


Типово: true

Приклади

0

#1 Приклад використання посилання на різних сторінках

echo get_pagenum_link(4);

// На головній
// поверне: http://example.com/page/4

// На сторінці http://example.com/article
// поверне: http://example.com/article/page/4
0

#2 Змінимо посилання пагінації

Допустимо на головній сторінці is_home() потрібно додати /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;

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

	return $url;
}

нотатки

  • Global. WP_Rewrite. $wp_rewrite WordPress rewrite component.

список змін

З версії 1.5.0Введено.

Код get_pagenum_link() WP 6.0.2

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 page number link for current request.
	 *
	 * @ Since 2.5.0
	 * @since 5.2.0 Added the `$pagenum` argument.
	 *
	 * @param string $result page number link.
	 * @param int $pagenum The page number.
	 */
	$result = apply_filters( 'get_pagenum_link', $result, $pagenum );

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

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *