get_page_link()WP 1.5.0

Retrieves the permalink for the current page or page ID.

Respects page_on_front. Use this one.

Used By: get_permalink()
1 time — 0.0038071 sec (very slow) | 50000 times — 7.68 sec (fast)
Hooks from the function

Return

String. The page permalink.

Usage

get_page_link( $post, $leavename, $sample );
$post(int|WP_Post)
Post ID or object.
Default: uses the global $post
$leavename(true|false)
Whether to keep the page name.
Default: false
$sample(true|false)
Whether it should be treated as a sample permalink.
Default: false

Examples

0

#1 Demo

// page post type - for which this function is intended
echo get_page_link( 10124 ); // https://example.com/about/privacy-policy

// leave the placeholder
echo get_page_link( 10124, true ); // https://example.com/%pagename%

WARNING: the function is not intended to be used for post post type and other custom post types, so it may return an incorrect results.

echo get_page_link( 13564 ); // https://example.com/atributy-scrset-sizes

// the correct is
echo get_permalink( 13564 ); // https://example.com/id_13564/atributy-scrset-sizes.html
0

#2 Example of use in an HTML template

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

Changelog

Since 1.5.0 Introduced.

get_page_link() code WP 6.4.3

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

	if ( 'page' === get_option( 'show_on_front' ) && 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 );
}