Comment obtenir l'ID d'auteur en dehors de la boucle
-
-
[vérifiez ceci] (http://markojakic.net/get-author-object-outside-the-loop-in-wordpress),cela afonctionnépourmoi.[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 réponses
- votes
-
- 2013-10-03
Lemoyen leplus simpleet leplus direct d'obtenir l'ID de l'auteur de l'articleen dehors de laboucle,si vous connaissez l'ID de l'article,est d'utiliser lafonctionprincipale de WordPress
get_post_field()
.$post_author_id = get_post_field( 'post_author', $post_id );
Si vousne connaissezpasencore l'ID depublication de lapage sur laquelle vous voustrouvez,depuis WP 3.1,la chose laplus simple àfaireest d'utiliser le
get_queried_object_id()
(recherchez-le dans la liste desméthodes)fonction quifonctionnemêmeen dehors de laboucle.$post_id = get_queried_object_id();
Si celane fonctionnepaspour vous,veuillez donner uneexplicationplus détaillée de l'endroit où vousessayez d'exécuter votre codeet nous verrons sinouspouvons vous aider davantage.
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
Voici comment obteniret obtenir l'ID de l'auteuren dehors de laboucle WordPress:
<?php global $post; $author_id=$post->post_author; ?>
Ensuite,ilnousestpossible
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 ); ?>
-
Celafonctionnetrèsbien si vous avez accès à l'identifiant depublication.Vouspouvez également utiliserget_the_author_meta ('user_nicename',$ author_id) si vousne souhaitezpas afficher la valeurimmédiatementThis 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
Cela dépend de l'endroit où vous voustrouvez. Si vous êtes sur unepage unique (parexemple,ne montrant qu'un seul {{Insérer letype demessageici}}),vouspouvez utiliser
get_queried_object
,qui récupérera l'objet depublication.<?php if (is_singular()) { $author_id = get_queried_object()->post_author; $address = get_the_author_meta('user_email', $author_id); }
Si vous êtes ailleurs,vouspouvez utiliser l'objetglobal
$wp_query
et vérifier sapropriété$posts
. Cela devrait égalementfonctionner sur despages uniques.<?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); }
Vouspouvez également simplement "faux démarrer" laboucleet la rembobinerpour récupérer l'ID de l'auteur. Celan'entraînera aucune consultation debase de données supplémentaire ou autre. WordPress récupèretous les articlesen mêmetemps (aumoment de la rédaction).
rewind_posts
réinitialise simplement l'objetpost actuel (l'objetglobal$post
) au début dutableau. L'inconvénientest que celapeutprovoquer le déclenchement de l'actionloop_start
bien plustôt que vousne le souhaitez - cen'estpas unegrosse affaire,juste quelque chose dont vous devez être conscient.<?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
On dirait que celafonctionneen dehors de laboucle,peut-être que cela aidera.
$thelogin = get_query_var('author_name'); $theauthor = get_userdatabylogin($thelogin);
Vouspouvez également définirmanuellement l'ID dumessageet saisir de cettemanière:
global $wp_query; $thePostID = $wp_query->post->ID; $postdata = get_post($thePostID, ARRAY_A); $authorID = $postdata['post_author'];
Modifiez l'ID de sortiepourpublier l'IDmanuellementpour un accès horsboucle.
Cene sontpas d'excellentes solutions,maisj'espère que cela aide.
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
J'aieu lemêmeproblèmeicien essayant de créer un widget affichant les articlesen vedette avec desinformations sur l'auteur.
J'ai utilisé certains desindices du deuxième conseil de @chrisguitarguy.
Mon code ressemblait à ceci:
<?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
J'espère que cela vous aidera:
$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
Pour obteniret obtenir l'ID de l'auteuren dehors de laboucle:
global $post; $author_id = $post->post_author;
Ensuite,utilisez
get_the_author_meta('field_name', $author_id)
rappelez-vous que si vous récupérez l'identifiant des articlesen boucleet que vous accédez à laboucle côté auteur,ilne fournira que les données du dernieridentifiant depublicationen boucle
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
Pourquoin'utilisez-vouspas the_author_meta
<p>The email address for user id 25 is <?php the_author_meta('user_email',25); ?></p>
Cecipeut être utilisé dans laboucle
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
-
Merci,mais leproblèmeest queje suisen dehors de laboucleet queje nepeuxpas résoudre ceproblème.Lorsque vous êtesen dehors de laboucle,le deuxième argument ($ author_id) doit êtrefourni.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
-
Bosse!Desidées?Çame rendfou :-/Bump! Any ideas? It's driving me crazy :-/
- 0
- 2012-09-21
- Marce Castro
-
**en dehors de laboucle ** - veuilleznoter la question.**outside the loop** - please note the question.
- 4
- 2012-12-26
- Christine Cooper
Jene peuxpasextraire l'ID de l'auteur dumessageen dehors de labouclepour queget_the_author_metafonctionne.Jusqu'àprésent,j'aiessayé différentes approches:
1.
2.
3.
4.
J'aibesoin de l'identifiant de l'auteurpour letransmettre à:
Des suggestions?