Warning: This function has been deprecated. Use WP_Query instead.

get_page_by_title( string $page_title, string $output = OBJECT, string|array $post_type = 'page' ): WP_Post|array|null

Retrieves a page given its title.


If more than one post uses the same title, the post with the smallest ID will be returned.
Be careful: in case of more than one post having the same title, it will check the oldest publication date, not the smallest ID.

Because this function uses the MySQL ‘=’ comparison, $page_title will usually be matched as case-insensitive with default collation.

Top ↑


$page_title string Required
Page title.
$output string Optional
The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which correspond to a WP_Post object, an associative array, or a numeric array, respectively.

Default: OBJECT

$post_type string|array Optional
Post type or array of post types. Default 'page'.

Default: 'page'

Top ↑


WP_Post|array|null WP_Post (or array) on success, or null on failure.

Top ↑


File: wp-includes/deprecated.php. View all references

function get_page_by_title( $page_title, $output = OBJECT, $post_type = 'page' ) {
	_deprecated_function( __FUNCTION__, '6.2.0', 'WP_Query' );
	global $wpdb;

	if ( is_array( $post_type ) ) {
		$post_type           = esc_sql( $post_type );
		$post_type_in_string = "'" . implode( "','", $post_type ) . "'";
		$sql                 = $wpdb->prepare(
			FROM $wpdb->posts
			WHERE post_title = %s
			AND post_type IN ($post_type_in_string)",
	} else {
		$sql = $wpdb->prepare(
			FROM $wpdb->posts
			WHERE post_title = %s
			AND post_type = %s",

	$page = $wpdb->get_var( $sql );

	if ( $page ) {
		return get_post( $page, $output );

	return null;

Top ↑


Version Description
6.2.0 Use WP_Query.
3.0.0 The $post_type parameter was added.
2.1.0 Introduced.

Top ↑

User Contributed Notes

  1. Skip to note 1 content
    Contributed by Gabor Lippert

    Deprecated !!!

    Here’s the link to the deprecation info article: https://make.wordpress.org/core/2023/03/06/get_page_by_title-deprecated/

    In a nutshell:

    Peter Wilson recommends the following alternative:

    $posts = get_posts(
            'post_type'              => 'page',
            'title'                  => 'Sample Page',
            'post_status'            => 'all',
            'numberposts'            => 1,
            'update_post_term_cache' => false,
            'update_post_meta_cache' => false,           
            'orderby'                => 'post_date ID',
            'order'                  => 'ASC',
    $page_got_by_title = null;
    if ( ! empty( $posts ) ) {
        $page_got_by_title = $posts[0];

    Or, alternatively, you can use the new WP_Query() method as well.

  2. Skip to note 2 content
    Contributed by Codex

    How To Find WordPress Page ID By Title Then Replace the_content()

    In this example, we find the page id of “Sample Page” then replace the page’s the_content() with “Hello World!”

    function my_content($content) {
    	$page = get_page_by_title( 'Sample Page' );
    	if ( is_page($page->ID) )
    		$content = "Hello World!";
    	return $content;
    add_filter('the_content', 'my_content');
  3. Skip to note 3 content
    Contributed by Akira Tachibana

    How to Find WordPress Custom Post Type by Title

    This is useful for Custom Post Types. Below, we find the $post array of a Custom Post Type “link” with a title of “World Peace Now”:

    $mypost = get_page_by_title('World Peace Now', OBJECT, 'link');

    This comment was copied from Codex.

  4. Skip to note 4 content
    Contributed by alordiel

    It is very important to mention that the function will disregard any post_status so if it finds and old post that is draft, it will show that result. So if you need to filter by post status you better build your own query.

  5. Skip to note 5 content
    Contributed by Codex

    Find Page ID to use with exclude in wp_list_pages

    This example will return the $page object for the page titled “About”. Then the $page->ID element is used to exclude the About page when listing pages.

    $page = get_page_by_title( 'About' );
    wp_list_pages( 'exclude=' . $page->ID );

You must log in before being able to contribute a note or feedback.