Einstellung von get_queried_object

Ich weiß, dass get_queried_object das Objekt enthält, das für die aktuelle Seite abgefragt wurde. Meine Frage ist, welche Methoden der Abfrage den Inhalt beeinflussen?

Zum Beispiel:

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

Solutions Collecting From Web of "Einstellung von get_queried_object"

Gemäß seiner lakonischen Quelle:

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

Diese function ruft das Objekt von der Hauptabfrage ab. Als solches wird es von allem beeinflusst, das die Hauptabfrage ändert. Von Ihrer Liste wäre das query_posts() (Grundzahl zigmal sollte nicht verwendet werden).

Alle diese Query-Aufrufe, die Sie erwähnt haben, sind Wrapper um WP_Query (außer wp_query, das selbst WP_Query ist, keine Wrapper erforderlich)

Also verweist get_queried_object auf die Hauptabfrage und ruft $wp_query->get_queried_object();

Was wir hier finden können:

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; } 

Also sind die übergebenen Argumente und wie viele Iterationen der Schleife, die Sie durchlaufen haben, die bestimmenden Faktoren.

TDLR: Einfach dem Code gefolgt, die meisten IDEs haben einen Sprung zur Definitionsschaltfläche, die Sie direkt dorthin führen würde