get_page_link()WP 1.5.0

Получает URL (ссылку) постоянной страницы WordPress (записи типа page).

Понимает, когда страница указана как главная страница сайта: см. опцию page_on_front.

Вместо этой функции почти всегда лучше использовать get_permalink() — универсальная функция, которая использует эту функцию когда нужно.

Работает на основе: _get_page_link()
Основа для: get_permalink()
1 раз — 0.0038071 сек (очень медленно) | 50000 раз — 7.68 сек (быстро)
Хуки из функции

Возвращает

Строку. URL.

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

get_page_link( $post, $leavename, $sample );
$post(число|WP_Post)
ID страницы или её объект.
По умолчанию: global $post
$leavename(true|false)
Нужно ли оставить холдер %pagename% как есть. true - оставить холдер без замены его на имя страницы. Имя страницы собирается из имени текущей страницы и родительских, например, parent_page_name/current_page_name.
По умолчанию: false
$sample(true|false)
true — получить образец ссылки с учетом структуры ЧПУ. Это может быть нужно, когда ссылка форсированно возвращается в простом виде (не ЧПУ - /?pagename=contacts), а нам нужно получить именно ЧПУ (/contacts).
По умолчанию: false

Примеры

0

#1 Демонстрация работы

// тип записи page — для которого предназначена эта функция
echo get_page_link( 10124 ); // https://wp-kama.ru/about/privacy-policy

// оставим холдер
echo get_page_link( 10124, true ); // https://wp-kama.ru/%pagename%

ВНИМАНИЕ: для типа записи post и других произвольных типов записей функция не предназначена, поэтому она может вернуть неправильный результат.

echo get_page_link( 13564 ); // https://wp-kama.ru/atributy-scrset-sizes

// правильная ссылка будет такая
echo get_permalink( 13564 ); // https://wp-kama.ru/id_13564/atributy-scrset-sizes.html
0

#2 Пример использования в HTML шаблоне

<a href="<?= esc_url( get_page_link( 40 ) ); ?>">
	<?php esc_html_e( 'Map', 'textdomain' ); ?>
</a>

Список изменений

С версии 1.5.0 Введена.

Код get_page_link() WP 6.7.2

function get_page_link( $post = false, $leavename = false, $sample = false ) {
	$post = get_post( $post );

	if ( 'page' === get_option( 'show_on_front' ) && (int) get_option( 'page_on_front' ) === $post->ID ) {
		$link = home_url( '/' );
	} else {
		$link = _get_page_link( $post, $leavename, $sample );
	}

	/**
	 * Filters the permalink for a page.
	 *
	 * @since 1.5.0
	 *
	 * @param string $link    The page's permalink.
	 * @param int    $post_id The ID of the page.
	 * @param bool   $sample  Is it a sample permalink.
	 */
	return apply_filters( 'page_link', $link, $post->ID, $sample );
}