web-dev-qa-db-fra.com

Comment obtenir les métadonnées de l'utilisateur pour une publication?

J'essaie d'obtenir les métadonnées de l'utilisateur à partir d'un article, mais seulement de l'utilisateur:

$args = array(
    'numberposts' => 10,
    'offset' => 0,
    'category' => 0,
    'orderby' => 'post_date',
    'order' => 'DESC',
    'post_type' => 'post',
    'post_status' => 'publish',
    'suppress_filters' => true
  );

  $recent_posts = wp_get_recent_posts( $args, ARRAY_A );

foreach ($recent_posts as $post) {
 $user_id = get_the_author_meta('ID', true) // is this correct
 // Is there a function that I need to pass the post ID ($post["ID"])?
 var_dump($user_id);
}

Lorsqu'un autre utilisateur publie un message, je ne peux pas obtenir ses métadonnées. Comment, s'il vous plaît?

1
Sylar

Vous pouvez passer l'auteur de l'article en argument à get_the_author_meta:

get_the_author_meta('ID', $post->post_author);

Le deuxième argument est l'ID de l'utilisateur. Ceci est stocké dans l'objet post de votre boucle, auquel vous pouvez y accéder en utilisant $post->post_author.

Raison

La raison derrière votre code actuel qui ne fonctionne pas est cette partie de code qui est incluse dans la get_the_author_meta():

if ( ! $user_id ) {
    global $authordata;
    $user_id = isset( $authordata->ID ) ? $authordata->ID : 0;
} else {
    $authordata = get_userdata( $user_id );
}

Si vous définissez le deuxième argument sur true (c'est-à-dire le $user_id), cela déclenchera la else, et en déclenchant le reste, vous passez une true à la get_userdata(), ce qui ne fonctionnera évidemment pas.

Jetez un oeil à cette page de référence du code pour plus de détails.

1
Jack Johansson