Wenn Posts ihre Daten über the_post()
(bzw. über setup_postdata()
) einrichten und daher über die API zugänglich sind ( get_the_ID()
z. B.), nehmen wir an, dass wir eine Gruppe von Benutzern durchlaufen (indem setup_userdata()
die globalen Variablen des aktuell angemeldeten Benutzers und von isn 'gefüllt werden). t nützlich für diese Aufgabe) und versuchen Sie, Metadaten pro Benutzer anzuzeigen:
<?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' );
}
Dann wpse-theme/template-parts/user-contact_methods.php
müssen wir in unserer Datei auf die Benutzer-ID zugreifen:
<?php
/** @var int $user_id */
$some_meta = get_the_author_meta( 'some_meta', $user_id );
var_dump( $some_meta );
Das ist es.
Die Erklärung liegt genau über dem Teil, den Sie in Ihrer Frage angegeben haben:
Wird load_template()
jedoch indirekt aufgerufen, indem get_template_part()
alle WP_Query
Abfragevariablen in den Bereich der geladenen Vorlage extrahiert werden .
Die native PHP- extract()
Funktion "extrahiert" die Variablen (die global $wp_query->query_vars
Eigenschaft) und fügt jeden Teil in eine eigene Variable ein, die genau den gleichen Namen wie der Schlüssel hat. Mit anderen Worten:
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
undget_query_var
, dies war jedoch für die Verwendung der Werte eines$args
Arrays, das an a übergeben wirdWP_Query
. Könnte für andere hilfreich sein, die anfangen, dies zu lernen.