Оскільки публікації налаштовують свої дані через the_post()
(відповідно через setup_postdata()
) і тому доступні через API ( get_the_ID()
наприклад,), припустимо, що ми перебираємо набір користувачів (як setup_userdata()
заповнює глобальні змінні поточно зареєстрованого користувача та isn ' t корисно для цього завдання) і спробуйте відобразити метадані на кожного користувача:
<?php
get_header();
// etc.
// In the main template file
$users = new \WP_User_Query( [ ... ] );
foreach ( $users as $user )
{
set_query_var( 'user_id', absint( $user->ID ) );
get_template_part( 'template-parts/user', 'contact_methods' );
}
Потім у нашому wpse-theme/template-parts/user-contact_methods.php
файлі нам потрібно отримати доступ до ідентифікатора користувача:
<?php
/** @var int $user_id */
$some_meta = get_the_author_meta( 'some_meta', $user_id );
var_dump( $some_meta );
Це воно.
Пояснення насправді саме вище частини, яку ви цитували у своєму запитанні:
Однак, load_template()
який називається опосередковано, get_template_part()
витягує всі WP_Query
змінні запиту, в область завантаженого шаблону.
Нативна extract()
функція PHP "витягує" змінні ( global $wp_query->query_vars
властивість) і ставить кожну частину у власну змінну, яка має точно те саме ім'я, що і ключ. Іншими словами:
set_query_var( 'foo', 'bar' );
$GLOBALS['wp_query'] (object)
-> query_vars (array)
foo => bar (string 3)
extract( $wp_query->query_vars );
var_dump( $foo );
// Result:
(string 3) 'bar'
set_query_var
іget_query_var
, тим НЕ менш це було для використання значень в$args
масиві , який передається доWP_Query
. Може бути корисним для інших людей, які починають це вчити.