À medida que as postagens obtêm seus dados configurados via the_post()
(respectivamente via setup_postdata()
) e, portanto, são acessíveis pela API ( get_the_ID()
por exemplo), vamos supor que estamos percorrendo um conjunto de usuários (como setup_userdata()
preenche as variáveis globais do usuário conectado no momento e não é ' útil para esta tarefa) e tente exibir metadados por usuário:
<?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' );
}
Em seguida, em nosso wpse-theme/template-parts/user-contact_methods.php
arquivo, precisamos acessar o ID do usuário:
<?php
/** @var int $user_id */
$some_meta = get_the_author_meta( 'some_meta', $user_id );
var_dump( $some_meta );
É isso aí.
A explicação está exatamente acima da parte que você citou na sua pergunta:
No entanto, load_template()
que é chamado indiretamente por get_template_part()
extrai todas as WP_Query
variáveis de consulta, no escopo do modelo carregado.
A extract()
função nativa do PHP "extrai" as variáveis (a global $wp_query->query_vars
propriedade) e coloca cada parte em sua própria variável, que tem exatamente o mesmo nome da chave. Em outras palavras:
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
eget_query_var
, no entanto, isso foi para usar os valores de uma$args
matriz que é passada para aWP_Query
. Pode ser útil para outras pessoas que estão começando a aprender isso.