get_queried_object()WP 3.1.0

Устанавливает и Получает текущий объект запроса (полная информация о посте, метках, рубриках и т.д.).

Эта функция получает разные данные для разных страниц (для текущего запроса). Так, если мы на:

  • странице записи, то вернется объект текущего поста WP_Post на странице которого мы находимся.
  • странице категории, то вернется объект WP_Term текущей категории.
  • странице автора, то вернется объект WP_User с информацией о пользователе.
  • странице типа записи, то вернется объект WP_Post_Type.

Эта функция является оберткой метода WP_Query::get_queried_object().

Ничего не вернет на странице:

Самый ранний возможный момент вызова этой функции

Знать первый доступный момент вызова важно, потому что если вызвать эту функцию раньше этого момента, то ваш вызов может сломать корректную работу кода, потому что эта функция устанавливает важное свойство $wp_query->queried_object! Поэтому она должна первый раз вызываться самим ВордПресс в момент когда данные текущей страницы определены.

Вызов этой функции установит свойство $wp_query->queried_object, если оно еще не установлено.

Свойство $wp_query->queried_object сбрасывается при каждом вызове WP_Query::query(), т.е. при любом запросе new WP_Query() или get_posts(). Очередной вызов этой функции устанавливает $wp_query->queried_object заново (как правило в те значения которые были до того, если переменные WP_Query относящиеся к основному запросу не были изменены).

Первый момент вызова отличается для разных страниц (проверено на WP 5.6.1). Рассмотрим подробно как он формируется:

  • Для страниц типа: is_category, is_tag, is_tax, is_post_type_archive, is_author, is_posts_page (front_page) — после установки переменных запроса на хуке parse_query или позднее.

    Переменные запроса устанавливаются цепочкой вызова следующих функций:

  • Для страниц типа: is_singular — после всего запроса (после полного отрабатывания метода WP_Query::get_posts().

    Самый раненный момент здесь — это фильтр pre_handle_404 или событие wp. Не подходят (еще рано) первые срабатывания события pre_get_posts или фильтров posts_results, the_posts.

    Так происходит потому что, чтобы определить текущую страницу записи сначала нужно сделать запрос и только после него и всех хуков которые к нему относятся, установить текущий объект поста WP_Query::$post - он устанавливается в самом конце метода WP_Query::get_posts().

Обратите внимание, что get_queried_object(), get_post() или global $post могут возвращать разные данные. Например, у вас есть страница «Блог», на которой выводятся другие посты, тогда get_queried_object() вернет страницу «Блог», а get_post() вернет текущую запись из цикла. Т.е. значение этой функции остается неизменным независимо от того, какой контент выводится на странице - она всегда содержит данные текущей страницы, в отличии от get_post() или global $post.

1 раз — 0.000026 сек (очень быстро) | 50000 раз — 0.06 сек (скорость света)

Хуков нет.

Возвращает

WP_Term|WP_Post_Type|WP_Post|WP_User|null.

Использование

$queried_object = get_queried_object();

Примеры

1

#1 Объект архива типа записи

Вызовем функцию на странице архива произвольной таксономии:

stdClass Object
(
	[labels] => stdClass Object
		(
			[name] => Радиостанции
			[singular_name] => Радио
			[add_new] => Добавить радио
			[add_new_item] => Добавление радио
			[edit_item] => Редактировать радио
			[new_item] => Радио
			[view_item] => Смотреть страницу радио
			[search_items] => Искать радио
			[not_found] => Радио не найдено
			[not_found_in_trash] => Радио не найдено
			[parent_item_colon] =>
			[all_items] => Радио
			[archives] => Радио
			[insert_into_item] => Вставить в запись
			[uploaded_to_this_item] => Загруженные для этой записи
			[featured_image] => Миниатюра записи
			[set_featured_image] => Задать миниатюру
			[remove_featured_image] => Удалить миниатюру
			[use_featured_image] => Использовать как миниатюру
			[filter_items_list] => Фильтровать список записей
			[items_list_navigation] => Навигация по списку записей
			[items_list] => Список записей
			[menu_name] => Радио
			[name_admin_bar] => Радио
		)

	[description] =>
	[public] => 1
	[hierarchical] =>
	[exclude_from_search] =>
	[publicly_queryable] => 1
	[show_ui] => 1
	[show_in_menu] => 1
	[show_in_nav_menus] => 1
	[show_in_admin_bar] => 1
	[menu_position] => 5
	[menu_icon] => dashicons-format-audio
	[capability_type] => post
	[map_meta_cap] => 1
	[register_meta_box_cb] =>
	[taxonomies] => Array
		(
			[0] => radio_cat
		)

	[has_archive] => 1
	[rewrite] => Array
		(
			[slug] => radio
			[with_front] => 1
			[pages] => 1
			[feeds] => 1
			[ep_mask] => 1
		)

	[query_var] => radio
	[can_export] => 1
	[delete_with_user] =>
	[_builtin] =>
	[_edit_link] => post.php?post=%d
	[name] => radio
	[cap] => stdClass Object
		(
			[edit_post] => edit_post
			[read_post] => read_post
			[delete_post] => delete_post
			[edit_posts] => edit_posts
			[edit_others_posts] => edit_others_posts
			[publish_posts] => publish_posts
			[read_private_posts] => read_private_posts
			[read] => read
			[delete_posts] => delete_posts
			[delete_private_posts] => delete_private_posts
			[delete_published_posts] => delete_published_posts
			[delete_others_posts] => delete_others_posts
			[edit_private_posts] => edit_private_posts
			[edit_published_posts] => edit_published_posts
			[create_posts] => edit_posts
		)

	[label] => Радиостанции
)
1

#2 Получим ID страницы записи

$post_id = get_queried_object()->ID;
0

#3 Объект таксономий (метки)

Вызовем функцию на странице метки и посмотрим что она нам вернет:

$queried_object = get_queried_object();
print_r( $queried_object );

/*
вернет:

WP_Term Object
(
	[term_id] => 452
	[name] => Метка
	[slug] => metka
	[term_group] => 0
	[term_taxonomy_id] => 452
	[taxonomy] => post_tag
	[description] =>
	[parent] => 0
	[count] => 14
	[filter] => raw
)
*/
0

#4 Объект поста

Вызовем функцию на странице поста - is_singular() и посмотрим на результат:

$queried_object = get_queried_object();
print_r( $queried_object );

/*
вернет:

WP_Post Object
(
	[ID] => 2762
	[post_author] => 1
	[post_date] => 2012-09-27 23:25:59
	[post_date_gmt] => 2012-09-27 23:25:59
	[post_content] => Текст поста.
	[post_title] => Заголовок поста
	[post_excerpt] =>
	[post_status] => publish
	[comment_status] => open
	[ping_status] => closed
	[post_password] =>
	[post_name] => zagolovok-posta
	[to_ping] =>
	[pinged] =>
	[post_modified] => 2013-06-10 10:58:25
	[post_modified_gmt] => 2013-06-10 10:58:25
	[post_content_filtered] =>
	[post_parent] => 0
	[guid] => http://example.com/zagolovok-posta
	[menu_order] => 0
	[post_type] => post
	[post_mime_type] =>
	[comment_count] => 0
	[filter] => raw
)
*/
0

#5 Объект автора

Теперь, вызовем функцию на странице постов автора и посмотрим какой объект нам вернется:

WP_User Object
(
	[data] => stdClass Object
		(
			[ID] => 1
			[user_login] => kama
			[user_pass] => $P$B/spPGtZwp7IPd/FuTORIpu95BZyqW/
			[user_nicename] => kama
			[user_email] => lkj@mail.ru
			[user_url] =>
			[user_registered] => 2011-04-05 15:22:38
			[user_activation_key] =>
			[user_status] => 0
			[display_name] => kama
		)

	[ID] => 1
	[caps] => Array
		(
			[administrator] => 1
		)

	[cap_key] => wp_capabilities
	[roles] => Array
		(
			[0] => administrator
		)

	[allcaps] => Array
		(
			[switch_themes] => 1
			[edit_themes] => 1
			[activate_plugins] => 1
			[edit_plugins] => 1
			[edit_users] => 1
			[edit_files] => 1
			[manage_options] => 1
			[moderate_comments] => 1
			[manage_categories] => 1
			[manage_links] => 1
			[upload_files] => 1
			[import] => 1
			[unfiltered_html] => 1
			[edit_posts] => 1
			[edit_others_posts] => 1
			[edit_published_posts] => 1
			[publish_posts] => 1
			[edit_pages] => 1
			[read] => 1
			[level_10] => 1
			[level_9] => 1
			[level_8] => 1
			[level_7] => 1
			[level_6] => 1
			[level_5] => 1
			[level_4] => 1
			[level_3] => 1
			[level_2] => 1
			[level_1] => 1
			[level_0] => 1
			[edit_others_pages] => 1
			[edit_published_pages] => 1
			[publish_pages] => 1
			[delete_pages] => 1
			[delete_others_pages] => 1
			[delete_published_pages] => 1
			[delete_posts] => 1
			[delete_others_posts] => 1
			[delete_published_posts] => 1
			[delete_private_posts] => 1
			[edit_private_posts] => 1
			[read_private_posts] => 1
			[delete_private_pages] => 1
			[edit_private_pages] => 1
			[read_private_pages] => 1
			[delete_users] => 1
			[create_users] => 1
			[unfiltered_upload] => 1
			[edit_dashboard] => 1
			[update_plugins] => 1
			[delete_plugins] => 1
			[install_plugins] => 1
			[update_themes] => 1
			[install_themes] => 1
			[update_core] => 1
			[list_users] => 1
			[remove_users] => 1
			[add_users] => 1
			[promote_users] => 1
			[edit_theme_options] => 1
			[delete_themes] => 1
			[export] => 1
			[administrator] => 1
		)

	[filter] =>
)

Заметки

  • Global. WP_Query. $wp_query WordPress Query object.

Список изменений

С версии 3.1.0 Введена.

Код get_queried_object() WP 6.5.2

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