Intereting Posts
Как реализовать настраиваемое поле пароля, которое перенаправляется на другую страницу при правильном пароле? Плагин устанавливает значение по умолчанию при его активации current_user_can в WordPress 3.1.1 Какие инструменты следует использовать для галереи, которая использует API и url для пути к изображениям? Источник данных Visual Composer? Перемещение записей меню WooCommerce в верхней части панели управления Самая быстрая конфигурация сервера, Каково ваше предложение? Нужно назначить alt tag для изображения категории wooCommerce Как изменить отдельный виджет в дочерней теме? Я хотел бы использовать функцию create в моем настраиваемом плагине, чтобы сообщить WP использовать другой заголовок Отключить перетаскивание мета-ящиков? Как получить этот JavaScript с помощью get_permalink Как добавить вкладки на страницу post.php для моего пользовательского сообщения Не удается упорядочить результат запроса как заданный массив идентификаторов сообщений Как создать персонализированный тип сообщения, получить шаблон пользовательского сообщения в плагине

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