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скидається за кожному виклику 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() .

Зауважте, що 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();

Приклади

0

#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
)
*/
0

#2 Об’єкт посту

Викликаємо функцію на сторінці посту – 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

#3 Об’єкт автора

Тепер, викличемо функцію на сторінці постів автора та подивимося який об’єкт нам повернеться:

WP_User Object
(
	[data] => stdClass Object
		(
			[ID] => 1
			[user_login] => kama
			[user_pass] => $P$B/spPGtZwp7IPd/FuTORIpu95BZyqW/
			[user_nicename] => kama
			[user_email] => [email protected]
			[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] =>
)
0

#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] => Радіостанції
)
0

#5 Отримаємо ID сторінки запису

$post_id = get_queried_object()->ID;

нотатки

  • Global. WP_Query. $wp_query WordPress Query object.

список змін

З версії 3.1.0Введено.

Код get_queried_object() WP 6.0.2

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

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *