Setting get_queried_object

I know that get_queried_object contains the object that was queried for the current page. My question is, what methods of querying affect the contents of this?

For instance:

  • query_posts
  • get_posts
  • get_post
  • new WP_Query
  • etc.

Solutions Collecting From Web of "Setting get_queried_object"

As per its laconic source:

function get_queried_object() {
    global $wp_query;
    return $wp_query->get_queried_object();
}

This function retrieves object from main query. As such it is affected by anything that changes main query. From your list that would be query_posts() (reason number umpteen it should not be used).

All those query calls you mentioned are wrappers around WP_Query ( except wp_query which is itself WP_Query, no wrappers necessary )

So get_queried_object refers to the main query and calls $wp_query->get_queried_object();

Which we can find here:

http://core.trac.wordpress.org/browser/tags/3.5.1//wp-includes/query.php#L2987

function get_queried_object() {
    if ( isset($this->queried_object) )
        return $this->queried_object;

    $this->queried_object = null;
    $this->queried_object_id = 0;

    if ( $this->is_category || $this->is_tag || $this->is_tax ) {
        $tax_query_in_and = wp_list_filter( $this->tax_query->queries, array( 'operator' => 'NOT IN' ), 'NOT' );

        $query = reset( $tax_query_in_and );

        if ( 'term_id' == $query['field'] )
            $term = get_term( reset( $query['terms'] ), $query['taxonomy'] );
        elseif ( $query['terms'] )
            $term = get_term_by( $query['field'], reset( $query['terms'] ), $query['taxonomy'] );

        if ( ! empty( $term ) && ! is_wp_error( $term ) )  {
            $this->queried_object = $term;
            $this->queried_object_id = (int) $term->term_id;

            if ( $this->is_category )
                _make_cat_compat( $this->queried_object );
        }
    } elseif ( $this->is_post_type_archive ) {
        $this->queried_object = get_post_type_object( $this->get('post_type') );
    } elseif ( $this->is_posts_page ) {
        $page_for_posts = get_option('page_for_posts');
        $this->queried_object = get_post( $page_for_posts );
        $this->queried_object_id = (int) $this->queried_object->ID;
    } elseif ( $this->is_singular && !is_null($this->post) ) {
        $this->queried_object = $this->post;
        $this->queried_object_id = (int) $this->post->ID;
    } elseif ( $this->is_author ) {
        $this->queried_object_id = (int) $this->get('author');
        $this->queried_object = get_userdata( $this->queried_object_id );
    }

    return $this->queried_object;
}

So the arguments passed in and how many iterations of the loop you’ve gone through are the determining factors.

TDLR: Just followed the code, most IDEs have a jump to definition button that would take you directly there