_get_page_link( int|WP_Post $post = false, bool $leavename = false, bool $sample = false ): string
- Since
- 2.1.0
- Source
wp-includes/link-template.php:428
Retrieves the page permalink.
Description
Ignores page_on_front. Internal use only.
Parameters
$postint|WP_Postoptional- Post ID or object. Default uses the global
$post.Default:false $leavenamebooloptional- Whether to keep the page name. Default false.Default:
false $samplebooloptional- Whether it should be treated as a sample permalink. Default false.Default:
false
Return
string- The page permalink.
Hooks fired · 1
One hook fires while _get_page_link() runs, in this order:
- apply_filters( _get_page_link )filterline 456 (+28 into the body)
Filters the permalink for a non-page_on_front page.
Uses · 6
- get_post()Retrieves post data given a post ID or post object.
- wp_force_plain_post_permalink()Determine whether post should always use a plain permalink structure.
- get_page_uri()Builds the URI path for a page.
- home_url()Retrieves the URL for the current site where the front end is accessible.
- user_trailingslashit()Retrieves a trailing-slashed string if the site is set for adding trailing slashes.
- apply_filters()Calls the callback functions that have been added to a filter hook.
Used by · 3
- get_attachment_link()Retrieves the permalink for an attachment.
- get_page_link()Retrieves the permalink for the current page or page ID.
- get_post_comments_feed_link()Retrieves the permalink for the post comments feed.
Source
function _get_page_link( $post = false, $leavename = false, $sample = false ) { global $wp_rewrite; $post = get_post( $post ); $force_plain_link = wp_force_plain_post_permalink( $post ); $link = $wp_rewrite->get_page_permastruct(); if ( ! empty( $link ) && ( ( isset( $post->post_status ) && ! $force_plain_link ) || $sample ) ) { if ( ! $leavename ) { $link = str_replace( '%pagename%', get_page_uri( $post ), $link ); } $link = home_url( $link ); $link = user_trailingslashit( $link, 'page' ); } else { $link = home_url( '?page_id=' . $post->ID ); } /** * Filters the permalink for a non-page_on_front page. * * @since 2.1.0 * * @param string $link The page's permalink. * @param int $post_id The ID of the page. */ return apply_filters( '_get_page_link', $link, $post->ID );}History
Introduced in 2.1.0. Unchanged from 6.7.7 through 7.1.0.
Signature, return type and hooks compared across 5 parsed releases.
About this page
- Parsed data
- Generated from the wordpress-develop 6.8.8 tag, from
src/wp-includes/link-template.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it. - Corrections
- Something wrong on this page? Report it and it gets fixed in the next regeneration.