get_page_uri

The timeline below displays how wordpress function get_page_uri has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.1

/**
 * Builds the URI path for a page.
 *
 * Sub pages will be in the "directory" under the parent page post name.
 *
 * @since 1.5.0
 * @since 4.6.0 The `$page` parameter was made optional.
 *
 * @param WP_Post|object|int $page Optional. Page ID or WP_Post object. Default is global $post.
 * @return string|false Page URI, false on error.
 */
function get_page_uri($page = 0)
{
    if (!$page instanceof WP_Post) {
        $page = get_post($page);
    }
    if (!$page) {
        return false;
    }
    $uri = $page->post_name;
    foreach ($page->ancestors as $parent) {
        $parent = get_post($parent);
        if ($parent && $parent->post_name) {
            $uri = $parent->post_name . '/' . $uri;
        }
    }
    /**
     * Filters the URI for a page.
     *
     * @since 4.4.0
     *
     * @param string  $uri  Page URI.
     * @param WP_Post $page Page object.
     */
    return apply_filters('get_page_uri', $uri, $page);
}

WordPress Version: 5.3

/**
 * Build the URI path for a page.
 *
 * Sub pages will be in the "directory" under the parent page post name.
 *
 * @since 1.5.0
 * @since 4.6.0 The `$page` parameter was made optional.
 *
 * @param WP_Post|object|int $page Optional. Page ID or WP_Post object. Default is global $post.
 * @return string|false Page URI, false on error.
 */
function get_page_uri($page = 0)
{
    if (!$page instanceof WP_Post) {
        $page = get_post($page);
    }
    if (!$page) {
        return false;
    }
    $uri = $page->post_name;
    foreach ($page->ancestors as $parent) {
        $parent = get_post($parent);
        if ($parent && $parent->post_name) {
            $uri = $parent->post_name . '/' . $uri;
        }
    }
    /**
     * Filters the URI for a page.
     *
     * @since 4.4.0
     *
     * @param string  $uri  Page URI.
     * @param WP_Post $page Page object.
     */
    return apply_filters('get_page_uri', $uri, $page);
}

WordPress Version: 4.6

/**
 * Build the URI path for a page.
 *
 * Sub pages will be in the "directory" under the parent page post name.
 *
 * @since 1.5.0
 * @since 4.6.0 Converted the `$page` parameter to optional.
 *
 * @param WP_Post|object|int $page Optional. Page ID or WP_Post object. Default is global $post.
 * @return string|false Page URI, false on error.
 */
function get_page_uri($page = 0)
{
    if (!$page instanceof WP_Post) {
        $page = get_post($page);
    }
    if (!$page) {
        return false;
    }
    $uri = $page->post_name;
    foreach ($page->ancestors as $parent) {
        $parent = get_post($parent);
        if ($parent && $parent->post_name) {
            $uri = $parent->post_name . '/' . $uri;
        }
    }
    /**
     * Filters the URI for a page.
     *
     * @since 4.4.0
     *
     * @param string  $uri  Page URI.
     * @param WP_Post $page Page object.
     */
    return apply_filters('get_page_uri', $uri, $page);
}

WordPress Version: 4.5

/**
 * Build the URI path for a page.
 *
 * Sub pages will be in the "directory" under the parent page post name.
 *
 * @since 1.5.0
 *
 * @param WP_Post|object|int $page Page object or page ID.
 * @return string|false Page URI, false on error.
 */
function get_page_uri($page)
{
    if (!$page instanceof WP_Post) {
        $page = get_post($page);
    }
    if (!$page) {
        return false;
    }
    $uri = $page->post_name;
    foreach ($page->ancestors as $parent) {
        $parent = get_post($parent);
        if ($parent) {
            $uri = $parent->post_name . '/' . $uri;
        }
    }
    /**
     * Filter the URI for a page.
     *
     * @since 4.4.0
     *
     * @param string  $uri  Page URI.
     * @param WP_Post $page Page object.
     */
    return apply_filters('get_page_uri', $uri, $page);
}

WordPress Version: 4.1

/**
 * Build URI for a page.
 *
 * Sub pages will be in the "directory" under the parent page post name.
 *
 * @since 1.5.0
 *
 * @param WP_Post|object|int $page Page object or page ID.
 * @return string|false Page URI, false on error.
 */
function get_page_uri($page)
{
    $page = get_post($page);
    if (!$page) {
        return false;
    }
    $uri = $page->post_name;
    foreach ($page->ancestors as $parent) {
        $parent = get_post($parent);
        if ($parent) {
            $uri = $parent->post_name . '/' . $uri;
        }
    }
    /**
     * Filter the URI for a page.
     *
     * @since 4.4.0
     *
     * @param string  $uri  Page URI.
     * @param WP_Post $page Page object.
     */
    return apply_filters('get_page_uri', $uri, $page);
}

WordPress Version: 4.4

/**
 * Build URI for a page.
 *
 * Sub pages will be in the "directory" under the parent page post name.
 *
 * @since 1.5.0
 *
 * @param WP_Post|object|int $page Page object or page ID.
 * @return string|false Page URI, false on error.
 */
function get_page_uri($page)
{
    $page = get_post($page);
    if (!$page) {
        return false;
    }
    $uri = $page->post_name;
    foreach ($page->ancestors as $parent) {
        $parent = get_post($parent);
        if ('publish' === $parent->post_status) {
            $uri = $parent->post_name . '/' . $uri;
        }
    }
    /**
     * Filter the URI for a page.
     *
     * @since 4.4.0
     *
     * @param string  $uri  Page URI.
     * @param WP_Post $page Page object.
     */
    return apply_filters('get_page_uri', $uri, $page);
}

WordPress Version: 4.0

/**
 * Build URI for a page.
 *
 * Sub pages will be in the "directory" under the parent page post name.
 *
 * @since 1.5.0
 *
 * @param WP_Post|object|int $page Page object or page ID.
 * @return string|false Page URI, false on error.
 */
function get_page_uri($page)
{
    $page = get_post($page);
    if (!$page) {
        return false;
    }
    $uri = $page->post_name;
    foreach ($page->ancestors as $parent) {
        $uri = get_post($parent)->post_name . '/' . $uri;
    }
    return $uri;
}

WordPress Version: 3.7

/**
 * Builds URI for a page.
 *
 * Sub pages will be in the "directory" under the parent page post name.
 *
 * @since 1.5.0
 *
 * @param mixed $page Page object or page ID.
 * @return string|false Page URI, false on error.
 */
function get_page_uri($page)
{
    $page = get_post($page);
    if (!$page) {
        return false;
    }
    $uri = $page->post_name;
    foreach ($page->ancestors as $parent) {
        $uri = get_post($parent)->post_name . '/' . $uri;
    }
    return $uri;
}