get_queried_object() WP 1.5
Устанавливает и Получает текущий объект запроса (полная информация о посте, метках, рубриках и т.д.).
Эта функция получает данные текущего запроса (текущей страницы) и является оберткой для конструкции WP_Query::get_queried_object(). Если мы на:
- странице записи, то вернется объект текущего поста WP_Post на странице которого мы находимся.
- странице категории, то вернется объект WP_Term текущей категории.
- странице автора, то вернется объект WP_User с информацией о пользователе.
- странице типа записи, то вернется объект WP_Post_Type.
Самый ранний возможный момент вызова этой функции отличается для разных страниц (проверено на WP 5.6.1).
-
Для страниц: is_category, is_tag, is_tax, is_post_type_archive, is_author, is_posts_page (front_page) — после установки переменных запроса на хуке parse_query или позднее.
Переменные запроса устанавливаются цепочкой вызова следующих функций:
WP::main() > WP::query_posts() > WP_Query::query() > WP_Query::get_posts() > WP_Query::parse_query() — это хук parse_query или первое срабатывание хука pre_get_posts. За ним вызывается хук pre_handle_404, затем wp и т.д. - Для страниц is_singular — после всего запроса (после полного отрабатывания метода WP_Query::get_posts(). Самый раненный фильтр здесь это pre_handle_404 или событие wp. Не подходят (еще рано) первые срабатывания события pre_get_posts или фильтров posts_results, the_posts.
Так происходит потому что, чтобы определить текущую страницу записи сначала нужно сделать запрос и только после него и всех хуков которые к нему относятся, установить текущий объект постаWP_Query::$post
- он устанавливается в самом конце метода WP_Query::get_posts().
Вызов этой функции установит свойство $wp_query->queried_object
, если оно еще не установлено.
Свойство $wp_query->queried_object
сбрасывается при каждом вызове WP_Query::query(), т.е. при любом запросе new WP_Query() или get_posts(). Очередной вызов этой функции устанавливает $wp_query->queried_object
заново (как правило в те значения которые были до того, если переменные WP_Query относящиеся к основному запросу не были изменены).
Обратите внимание, что get_queried_object(), get_post() или global $post могут возвращать разные данные. Например, у вас есть страница «Блог», на которой выводятся другие посты, тогда get_queried_object() вернет страницу «Блог», а get_post() вернет текущую запись из цикла. Т.е. значение этой функции не меняется независимо от того, что выводится на странице - она всегда содержит данные текущей страницы.
Хуков нет.
Возвращает
Объект.
Использование
$queried_object = get_queried_object();
Примеры
#1 Объект таксономий (метки)
Вызовем функцию на странице метки и посмотрим что она нам вернет:
$queried_object = get_queried_object(); print_r( $queried_object ); /* вернет: stdClass Object ( [term_id] => 452 [name] => Метка [slug] => metka [term_group] => 0 [term_taxonomy_id] => 452 [taxonomy] => post_tag [description] => [parent] => 0 [count] => 14 [filter] => raw ) */
#2 Объект поста
Вызовем функцию на странице поста и посмотрим на результат:
$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://wptest.ru/zagolovok-posta [menu_order] => 0 [post_type] => post [post_mime_type] => [comment_count] => 0 [filter] => raw ) */
#3 Объект автора
Теперь, вызовем функцию на странице постов автора и посмотрим какой объект нам вернется:
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] => )
#4 Объект архива типа записи
Вызовем функцию на странице архива произвольной таксономии:
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] => Радиостанции )
#5 Получим ID страницы записи
$post_id = get_queried_object()->ID;
Заметки
- Global. WP_Query. $wp_query WordPress Query object.
Список изменений
С версии 3.1.0 | Введена. |
Код get_queried_object() get queried object WP 5.6.2
function get_queried_object() {
global $wp_query;
return $wp_query->get_queried_object();
}