Title: WP_Query::setup_postdata
Published: December 18, 2014
Last modified: May 20, 2026

---

# WP_Query::setup_postdata( WP_Post|object|int $post ): bool

## In this article

 * [Parameters](https://developer.wordpress.org/reference/classes/wp_query/setup_postdata/?output_format=md#parameters)
 * [Return](https://developer.wordpress.org/reference/classes/wp_query/setup_postdata/?output_format=md#return)
 * [Source](https://developer.wordpress.org/reference/classes/wp_query/setup_postdata/?output_format=md#source)
 * [Hooks](https://developer.wordpress.org/reference/classes/wp_query/setup_postdata/?output_format=md#hooks)
 * [Related](https://developer.wordpress.org/reference/classes/wp_query/setup_postdata/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/classes/wp_query/setup_postdata/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/classes/wp_query/setup_postdata/?output_format=md#wp--skip-link--target)

Sets up global post data.

## 󠀁[Parameters](https://developer.wordpress.org/reference/classes/wp_query/setup_postdata/?output_format=md#parameters)󠁿

 `$post`[WP_Post](https://developer.wordpress.org/reference/classes/wp_post/)|object
|intrequired

[WP_Post](https://developer.wordpress.org/reference/classes/wp_post/) instance or
Post ID/object.

## 󠀁[Return](https://developer.wordpress.org/reference/classes/wp_query/setup_postdata/?output_format=md#return)󠁿

 bool True on success, false on failure.

## 󠀁[Source](https://developer.wordpress.org/reference/classes/wp_query/setup_postdata/?output_format=md#source)󠁿

    ```php
    public function setup_postdata( $post ) {
    	global $id, $authordata, $currentday, $currentmonth, $page, $pages, $multipage, $more, $numpages;

    	if ( ! ( $post instanceof WP_Post ) ) {
    		$post = get_post( $post );
    	}

    	if ( ! $post ) {
    		return false;
    	}

    	$elements = $this->generate_postdata( $post );
    	if ( false === $elements ) {
    		return false;
    	}

    	$id           = $elements['id'];
    	$authordata   = $elements['authordata'];
    	$currentday   = $elements['currentday'];
    	$currentmonth = $elements['currentmonth'];
    	$page         = $elements['page'];
    	$pages        = $elements['pages'];
    	$multipage    = $elements['multipage'];
    	$more         = $elements['more'];
    	$numpages     = $elements['numpages'];

    	/**
    	 * Fires once the post data has been set up.
    	 *
    	 * @since 2.8.0
    	 * @since 4.1.0 Introduced `$query` parameter.
    	 *
    	 * @param WP_Post  $post  The Post object (passed by reference).
    	 * @param WP_Query $query The current Query object (passed by reference).
    	 */
    	do_action_ref_array( 'the_post', array( &$post, &$this ) );

    	return true;
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/class-wp-query.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/7.0/src/wp-includes/class-wp-query.php#L4821)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/class-wp-query.php#L4821-L4859)

## 󠀁[Hooks](https://developer.wordpress.org/reference/classes/wp_query/setup_postdata/?output_format=md#hooks)󠁿

 [do_action_ref_array( ‘the_post’, WP_Post $post, WP_Query $query )](https://developer.wordpress.org/reference/hooks/the_post/)

Fires once the post data has been set up.

## 󠀁[Related](https://developer.wordpress.org/reference/classes/wp_query/setup_postdata/?output_format=md#related)󠁿

| Uses | Description | 
| [WP_Query::generate_postdata()](https://developer.wordpress.org/reference/classes/wp_query/generate_postdata/)`wp-includes/class-wp-query.php` |

Generates post data.

  | 
| [do_action_ref_array()](https://developer.wordpress.org/reference/functions/do_action_ref_array/)`wp-includes/plugin.php` |

Calls the callback functions that have been added to an action hook, specifying arguments in an array.

  | 
| [get_post()](https://developer.wordpress.org/reference/functions/get_post/)`wp-includes/post.php` |

Retrieves post data given a post ID or post object.

  |

[Show 1 more](https://developer.wordpress.org/reference/classes/wp_query/setup_postdata/?output_format=md#)
[Show less](https://developer.wordpress.org/reference/classes/wp_query/setup_postdata/?output_format=md#)

| Used by | Description | 
| [WP_Query::reset_postdata()](https://developer.wordpress.org/reference/classes/wp_query/reset_postdata/)`wp-includes/class-wp-query.php` |

After looping through a nested query, this function restores the $post global to the current post in this query.

  | 
| [WP_Query::the_post()](https://developer.wordpress.org/reference/classes/wp_query/the_post/)`wp-includes/class-wp-query.php` |

Sets up the current post.

  | 
| [setup_postdata()](https://developer.wordpress.org/reference/functions/setup_postdata/)`wp-includes/query.php` |

Set up global post data.

  |

## 󠀁[Changelog](https://developer.wordpress.org/reference/classes/wp_query/setup_postdata/?output_format=md#changelog)󠁿

| Version | Description | 
| [4.4.0](https://developer.wordpress.org/reference/since/4.4.0/) | Added the ability to pass a post ID to `$post`. | 
| [4.1.0](https://developer.wordpress.org/reference/since/4.1.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Fclasses%2Fwp_query%2Fsetup_postdata%2F)
before being able to contribute a note or feedback.