Intereting Posts
Как отображать только одну категорию в пользовательском типе сообщений? Как выровнять последние 3 пункта меню справа – главное меню WordPress Использование команды echo добавляет нежелательные br-теги к источнику Экран ввода комментариев отображается, хотя флажок «Разрешить комментарии» не установлен дополнительный текст в Vimeo Встроенные видео Получить заголовок и URL-адрес вложенного родительского сообщения экземпляр пуст в функции widget () Как вы делаете сообщения из внешнего WordPress? используя wp_query для возврата сообщений w / comment count> 0 Исключить первое «n» количество сообщений тега с домашней страницы? Как создать пользовательский Slug для тегов и категорий с префиксом или суффикс? Как скрыть W3 Total Cache от не админов? Phpmyadmin – редактирование сообщений Применить фильтр the_content только для определенных типов сообщений Как устранить ответы с помощью WP HTTP API?

Установка 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 есть кнопка перехода к определению, которая приведет вас прямо туда