Ich kann die Beitragsautoren-ID nicht außerhalb der Schleife abrufen, damit get_the_author_meta funktioniert. Bisher habe ich verschiedene Ansätze ausprobiert:
1.
$author_id=$post->post_author;
2.
global $post;
$author_id=$post->post_author;
3.
$post_tmp = get_post($post_id);
$author_id = $post_tmp->post_author;
4.
$author_id = $posts[0]->post_author;
Ich benötige die Autoren-ID, um sie weiterzuleiten an:
$address = get_the_author_meta('user_email', $author_id);
Irgendwelche Vorschläge?
Antworten:
Die einfachste und direkteste Möglichkeit, die ID des Autors eines Beitrags außerhalb der Schleife abzurufen, ist die Verwendung der WordPress-Kernfunktion, sofern Sie die ID des Beitrags kennen
get_post_field()
.Wenn Sie die Beitrags-ID der Seite, auf der Sie sich befinden, noch nicht kennen, ist es seit WP 3.1 am einfachsten, die Funktion
get_queried_object_id()
(siehe Liste der Methoden) zu verwenden, die auch außerhalb der Schleife funktioniert.Wenn dies für Sie nicht funktioniert, geben Sie bitte eine genauere Erklärung an, wo Sie versuchen, Ihren Code auszuführen, und wir können sehen, ob wir Ihnen weiterhelfen können.
quelle
So erhalten Sie die Autoren-ID außerhalb der WordPress-Schleife:
Dann ist es uns möglich
the_author_meta
:quelle
Kommt darauf an, wo du bist. Wenn Sie sich auf einer einzelnen Seite befinden (z. B. nur einen einzelnen {{Post-Typ hier einfügen}}), können Sie verwenden
get_queried_object
, um das Post-Objekt abzurufen.Wenn Sie irgendwo anders sind, können Sie das globale
$wp_query
Objekt verwenden und dessen$posts
Eigenschaft überprüfen . Dies sollte auch auf einzelnen Seiten funktionieren.Sie können die Schleife auch einfach "falsch starten" und zurückspulen, um die Autoren-ID zu erhalten. Hierdurch entstehen keine zusätzlichen Datenbanktreffer oder ähnliches. WordPress ruft alle Beiträge auf einmal ab (zum Zeitpunkt des Schreibens).
rewind_posts
Setzt einfach das aktuelle Post-$post
Objekt (das globale Objekt) auf den Anfang des Arrays zurück. Der Nachteil ist, dass dies dazu führen kann, dass dieloop_start
Aktion viel früher ausgelöst wird, als Sie es möchten - keine große Sache, nur etwas, dessen Sie sich bewusst sein müssen.quelle
Das sieht so aus, als würde es außerhalb der Schleife funktionieren. Vielleicht hilft das.
Sie können die ID des Posts auch manuell festlegen und auf folgende Weise abrufen:
Ändern Sie die ID aus, um die ID manuell für den Zugriff außerhalb der Schleife zu veröffentlichen.
Keine großartigen Lösungen, aber hoffentlich hilft es.
quelle
Ich hatte hier das gleiche Problem, als ich versuchte, ein Widget zu erstellen, in dem vorgestellte Beiträge mit Autoreninformationen angezeigt wurden.
Ich habe einige der Hinweise von @chrisguitarguy 2. Tipp verwendet.
Mein Code sah so aus:
quelle
Warum benutzt du nicht die_author_meta?
Dies kann innerhalb der Schleife verwendet werden
quelle