Ketika posting mendapatkan data mereka diatur melalui the_post()
(masing-masing melalui setup_postdata()
) dan karenanya dapat diakses melalui API ( get_the_ID()
misalnya), mari kita asumsikan bahwa kita mengulang melalui serangkaian pengguna (seperti setup_userdata()
mengisi variabel global dari pengguna yang saat ini masuk dan tidak t berguna untuk tugas ini) dan mencoba menampilkan meta data per pengguna:
<?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' );
}
Kemudian, di wpse-theme/template-parts/user-contact_methods.php
file kami , kami perlu mengakses ID pengguna:
<?php
/** @var int $user_id */
$some_meta = get_the_author_meta( 'some_meta', $user_id );
var_dump( $some_meta );
Itu dia.
Penjelasan sebenarnya persis di atas bagian yang Anda kutip dalam pertanyaan Anda:
Namun, load_template()
yang dipanggil secara tidak langsung dengan get_template_part()
mengekstrak semua WP_Query
variabel kueri, ke dalam lingkup templat yang dimuat.
extract()
Fungsi PHP asli "mengekstrak" variabel ( global $wp_query->query_vars
properti) dan menempatkan setiap bagian ke dalam variabelnya sendiri yang memiliki nama yang persis sama dengan kunci. Dengan kata lain:
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
danget_query_var
, namun ini adalah untuk menggunakan nilai dari suatu$args
array dilewatkan keWP_Query
. Mungkin bermanfaat bagi orang lain yang mulai mempelajari hal ini.