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()
por ejemplo), supongamos que estamos recorriendo un conjunto de usuarios (ya que setup_userdata()
llena las variables globales del usuario actualmente conectado y no está ' t útil para esta tarea) e intente mostrar 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 wpse-theme/template-parts/user-contact_methods.php
archivo, 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.
La explicación en realidad está exactamente por encima de la parte que citó en su pregunta:
Sin embargo, lo load_template()
que se llama indirectamente por get_template_part()
extractos de todas las WP_Query
variables de consulta, dentro del alcance de la plantilla cargada.
La extract()
función nativa de PHP "extrae" las variables (la global $wp_query->query_vars
propiedad) y pone 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'
set_query_var
yget_query_var
, sin embargo, esto era para el uso de los valores de una$args
matriz que se pasa a unaWP_Query
. Puede ser útil para otras personas que comienzan a aprender esto.