A medida que las publicaciones configuran sus datos a través de the_post()
(respectivamente a través de setup_postdata()
) y, por lo tanto, son accesibles a través de la API ( get_the_ID()
para, por ejemplo), asumamos que estamos haciendo un bucle a través de un conjunto de usuarios (como < a href="http://queryposts.com/function/setup_userdata/"> setup_userdata()
llena las variables globales del usuario actualmente registrado y no es útil para esta tarea ) e intenta mostrar los metadatos por usuario:
<?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' );
}
Luego, en nuestro archivo wpse-theme/template-parts/user-contact_methods.php
, necesitamos acceder a la ID de usuario:
<?php
/** @var int $user_id */
$some_meta = get_the_author_meta( 'some_meta', $user_id );
var_dump( $some_meta );
Eso es todo.
La explicación es en realidad exactamente por encima de la parte que citó en su pregunta:
Sin embargo, load_template()
, que se llama indirectamente por get_template_part()
, extrae todas las variables de consulta WP_Query
, en el alcance de la plantilla cargada.
La función extract()
nativa de PHP "extrae" las variables (la propiedad global $wp_query->query_vars
) y coloca cada parte en su propia variable que tiene exactamente el mismo nombre que la clave. En otras palabras:
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'