So erhalten Sie die Autoren-ID außerhalb der Schleife
-
-
[checkthis out] (http://markojakic.net/get-author-object-outside-the-loop-in-wordpress),das hatbei mirfunktioniert.[check this out](http://markojakic.net/get-author-object-outside-the-loop-in-wordpress), this worked for me.
- 0
- 2012-12-17
- Asaf Chertkoff
-
8 Antworten
- Stimmen
-
- 2013-10-03
Dereinfachste undeinfachste Weg,die Post-Autoren-ID außerhalb der Schleife zuerhalten,wenn Sie die Post-ID kennen,ist die Verwendung der WordPress-Kernfunktion
get_post_field()
.$post_author_id = get_post_field( 'post_author', $post_id );
Wenn Sie die Post-ID der Seite,auf der Sie sichbefinden,nochnicht kennen,verwenden Sie seit WP 3.1 ameinfachsten die
get_queried_object_id()
(suchen Siein der Liste der Methoden danach)funktionieren auch außerhalb der Schleife.$post_id = get_queried_object_id();
Wenn diesefür Sienichtfunktionieren,geben Siebitte eine detailliertere Erklärung,wo Sie versuchen,Ihren Code auszuführen,und wir können sehen,ob wir Ihnen weiterhelfen können.
The simplest and most straightforward way to get the post author ID outside the loop, if you know the post ID, is to use the WordPress core function
get_post_field()
.$post_author_id = get_post_field( 'post_author', $post_id );
If you do not yet know the post ID of the page you are on, then since WP 3.1 the easiest thing to do is use the
get_queried_object_id()
(look for it in the list of Methods) function which works even outside the loop.$post_id = get_queried_object_id();
If these do not work for you then please give a more detailed explanation of where you are trying to run your code and we can see if we can help further.
-
- 2012-12-26
Soerhalten Sie die Autoren-ID außerhalb der WordPress-Schleife:
<?php global $post; $author_id=$post->post_author; ?>
Dannistes unsmöglich,
the_author_meta
:<?php the_author_meta( 'user_nicename', $author_id ); ?>
Here’s how to obtain and get the author ID outside the WordPress loop:
<?php global $post; $author_id=$post->post_author; ?>
Then it is possible to us
the_author_meta
:<?php the_author_meta( 'user_nicename', $author_id ); ?>
-
Diesfunktioniert hervorragend,wenn Sie Zugriff auf die Post-ID haben.Sie können auchget_the_author_meta ('user_nicename',$ author_id) verwenden,wenn Sie den Wertnicht sofort ausgebenmöchtenThis works great if you have access to the post ID. You can also use get_the_author_meta('user_nicename', $author_id ) if you don't want to output the value straight away
- 0
- 2016-12-21
- Andrew M
-
- 2012-12-26
Kommt darauf an,wo Sie sind. Wenn Sie sich aufeinereinzelnen Seitebefinden (z. B.nureinen einzelnen {{Beitragstyp hiereinfügen}} anzeigen),können Sie
get_queried_object
verwenden,um das Beitragsobjekt abzurufen.<?php if (is_singular()) { $author_id = get_queried_object()->post_author; $address = get_the_author_meta('user_email', $author_id); }
Wenn Sieirgendwo anders sind,können Sie dasglobale Objekt
$wp_query
verwenden und dessen Eigenschaft$posts
überprüfen. Dies sollte auch aufeinzelnen Seitenfunktionieren.<?php global $wp_query; if (!empty($wp_query->posts)) { $author_id = $wp_query->posts[0]->post_author; $address = get_the_author_meta('user_email', $author_id); }
Sie können die Schleife aucheinfach "falsch starten" und zurückspulen,um die Autoren-ID abzurufen. Diesführt zu keinen zusätzlichen Datenbanktreffern oder Ähnlichem. WordPress ruft alle Beiträge aufeinmal ab (zum Zeitpunkt des Schreibens).
rewind_posts
setztnur das aktuelle Post-Objekt (dasglobale$post
) auf den Anfang des Arrays zurück. Der Nachteilist,dass dies dazuführen kann,dass die Aktionloop_start
vielfrüher ausgelöst wird,als Sieesmöchten - keinegroße Sache,nuretwas,das Siebeachten sollten.<?php // make sure you're at the beginning. rewind_posts(); // start the loop the_post(); // get what you need $address = get_the_author_meta('user_email'); // back to normal rewind_posts();
Depends on where you are. If you're on a singular page (eg. only showing a single {{Insert Post Type Here}}), you could use
get_queried_object
, which will fetch the post object.<?php if (is_singular()) { $author_id = get_queried_object()->post_author; $address = get_the_author_meta('user_email', $author_id); }
If you're anywhere else, you could use the global
$wp_query
object, and check its$posts
property. This should work on singular pages as well.<?php global $wp_query; if (!empty($wp_query->posts)) { $author_id = $wp_query->posts[0]->post_author; $address = get_the_author_meta('user_email', $author_id); }
You can also just "false start" the loop and rewind it to grab the author ID. This will no incur any additional database hits or the like. WordPress fetches all posts at once (at the time of writing).
rewind_posts
just resets the current post (the global$post
) object to the beginning of the array. The downside is that this may cause theloop_start
action to fire way earlier than you want it to -- not a huge deal, just something to be aware of.<?php // make sure you're at the beginning. rewind_posts(); // start the loop the_post(); // get what you need $address = get_the_author_meta('user_email'); // back to normal rewind_posts();
-
- 2012-12-26
Das sieht so aus,als würdees außerhalb der Schleifefunktionieren. Vielleicht hilft das.
$thelogin = get_query_var('author_name'); $theauthor = get_userdatabylogin($thelogin);
Sie können die ID des Beitrags auchmanuellfestlegen und auffolgende Weise abrufen:
global $wp_query; $thePostID = $wp_query->post->ID; $postdata = get_post($thePostID, ARRAY_A); $authorID = $postdata['post_author'];
Ändern Sie die ID,um die IDmanuellfür den Zugriff außerhalb der Schleife zu veröffentlichen.
Keinegroßartigen Lösungen,aber hoffentlich hilftes.
This looks like it works outside of the loop, maybe this will help.
$thelogin = get_query_var('author_name'); $theauthor = get_userdatabylogin($thelogin);
You could also manually set ID of post and grab this way:
global $wp_query; $thePostID = $wp_query->post->ID; $postdata = get_post($thePostID, ARRAY_A); $authorID = $postdata['post_author'];
Change ID out to post id manually for out of the loop access.
Not great solutions, but hopefully it helps.
-
- 2014-04-09
Ich hatte hier dasgleiche Problem,alsich versuchte,ein Widget zuerstellen,das ausgewählte Beiträgemit Autoreninformationen anzeigt.
Ich habeeinige der Hinweise aus dem zweiten Tipp von @chrisguitarguy verwendet.
Mein Code sahfolgendermaßen aus:
<?php $count = 0; $query_args = array( 'posts_per_page' => 5, ); $com_query = new WP_Query( $query_args ); $feat_posts = $com_query->posts; // array, so we can access each post based on position while ($com_query->have_posts()) { $com_query->the_post(); $author_name= get_the_author_meta('user_nicename', $feat_posts[$count]->post_author); $count++; }
I had the same issue here when trying to make a widget that displayed featured posts with author information.
I used some of the hint's from @chrisguitarguy 2nd tip.
My code looked like this:
<?php $count = 0; $query_args = array( 'posts_per_page' => 5, ); $com_query = new WP_Query( $query_args ); $feat_posts = $com_query->posts; // array, so we can access each post based on position while ($com_query->have_posts()) { $com_query->the_post(); $author_name= get_the_author_meta('user_nicename', $feat_posts[$count]->post_author); $count++; }
-
- 2019-12-28
Hoffentlich hilft das:
$args= array( 'post_type' =>'any', 'post_status' => 'publish', 'order' => 'ASC', 'posts_per_page' => '-1' ); $posts = new WP_Query($args); $posts = $posts->posts; foreach($posts as $post) { switch ($post->post_type) { case 'page': // get the author's id through the post or page $id = get_post_field( 'post_author', $post->ID); // the first parameter is the name of the author // of the post or page and the second parameter // is the id with which the function obtains the name of the author. echo get_the_author_meta('display_name', $id); break; case 'post': $id = get_post_field( 'post_author', $post->ID; echo get_the_author_meta('display_name', $id); } }
Hopefully this wil help:
$args= array( 'post_type' =>'any', 'post_status' => 'publish', 'order' => 'ASC', 'posts_per_page' => '-1' ); $posts = new WP_Query($args); $posts = $posts->posts; foreach($posts as $post) { switch ($post->post_type) { case 'page': // get the author's id through the post or page $id = get_post_field( 'post_author', $post->ID); // the first parameter is the name of the author // of the post or page and the second parameter // is the id with which the function obtains the name of the author. echo get_the_author_meta('display_name', $id); break; case 'post': $id = get_post_field( 'post_author', $post->ID; echo get_the_author_meta('display_name', $id); } }
-
- 2019-12-28
Soerhalten Sie die Autoren-ID außerhalb der Schleife:
global $post; $author_id = $post->post_author;
Verwenden Sie dann
get_the_author_meta('field_name', $author_id)
Denken Sie daran,dassbeim Abrufen der Post-IDin der Schleife undbeim Zugriff auf die Autor-Out-Side-Schleifenur die Daten der letzten Post-IDin der Schleifebereitgestellt werden
To obtain and get the author ID outside the loop:
global $post; $author_id = $post->post_author;
Then use
get_the_author_meta('field_name', $author_id)
remember if you are fetching posts id in loop and accessing author out side loop then it will only provide data of last post id in loop
-
- 2012-09-18
Warum verwenden Sienicht the_author_meta
?<p>The email address for user id 25 is <?php the_author_meta('user_email',25); ?></p>
Dies kanninnerhalb der Schleife verwendet werden
Why don't you use the_author_meta
<p>The email address for user id 25 is <?php the_author_meta('user_email',25); ?></p>
This can be used within the loop
-
Danke,aber das Problemist,dassich außerhalb der Schleifebin und dasnichtbeheben kann.Wenn Sie sich außerhalb der Schleifebefinden,muss das zweite Argument ($ author_id) angegeben werden.Thanks, but the problem is I'm outside the loop and can't fix that. When you're outside the loop, the second argument ($author_id) needs to be provided.
- 0
- 2012-09-18
- Marce Castro
-
Stoßen!Irgendwelche Ideen?Esmachtmich verrückt :-/Bump! Any ideas? It's driving me crazy :-/
- 0
- 2012-09-21
- Marce Castro
-
** außerhalb der Schleife ** -bitte beachten Sie die Frage.**outside the loop** - please note the question.
- 4
- 2012-12-26
- Christine Cooper
Ich kann die Post-Autoren-IDnicht außerhalb der Schleife abrufen,damitget_the_author_metafunktioniert.Bisher habeich verschiedene Ansätze ausprobiert:
1.
2.
3.
4.
Ichbenötige die Autoren-ID,um sie anfolgende Adresse weiterzuleiten:
Irgendwelche Vorschläge?