Intereting Posts
Ajax – вызов функции undefined get_option () Вызов пользовательских меню WordPress Меню добавления сообщений и комментариев больше не отображается Какую привязку использовать для загрузки пользовательского расширения класса во время инициализации темы? Запросить сообщения или получить сообщения по настраиваемым полям, возможно? Изменение размера внешнего изображения Избранные сообщения Можно ли изменить параметры функции «Родительская тема» в теме «Дети»? Тема не отображается Автоматическое создание многосайтового блога при регистрации пользователя Объединение meta_query с фильтром категории Захват галереи ACF? Показать / скрыть раздел в настройке темы на основе выбора из другого раздела Как изменить каталог загрузки файлов на версии 3.5? Как предотвратить выполнение запроса по умолчанию, сохраняя при этом возможность использовать WP_Query в шаблоне?

Установка get_queried_object

Я знаю, что get_queried_object содержит объект, который был запрошен для текущей страницы. Мой вопрос: какие методы запроса влияют на содержание этого?

Например:

  • query_posts
  • get_posts
  • get_post
  • new WP_Query
  • и т.п.

Solutions Collecting From Web of "Установка get_queried_object"

Согласно его лаконичному источнику:

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

Эта функция извлекает объект из основного запроса. Как таковой, это зависит от всего, что меняет основной запрос. Из вашего списка, который будет query_posts() (номер причины, вероятно, не должен использоваться).

Все эти запросы, о которых вы упомянули, являются обертками вокруг WP_Query (за исключением wp_query, который сам WP_Query, без необходимости обертки)

Таким образом, get_queried_object ссылается на основной запрос и вызывает $wp_query->get_queried_object();

Что мы можем найти здесь:

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

Таким образом, аргументы, переданные и сколько итераций цикла, которые вы прошли, являются определяющими факторами.

TDLR: просто последовали за кодом, у большинства IDE есть кнопка перехода к определению, которая приведет вас прямо туда