web-dev-qa-db-fra.com

récupère l'identifiant de l'auteur en dehors de la boucle

J'ai besoin de placer dans metabox post edit edit avec e-mail post author (ou d'autres champs méta utilisateur). Donc, il peut être édité lorsque l'administrateur examine ce post.

$meta_id = get_the_author_meta( 'user_email', $user_id );

$meta_box = array(
    'id' => 'my-meta-box',
    'title' => 'DANE FIRMY',
    'page' => 'post',
    'context' => 'normal',
    'priority' => 'high',
    'fields' => array(
        array(
            'name' => 'E-mail box',
            'id' => 'mail',
            'type' => 'text',
            'std' => $meta_id
        )
    )
);

Ce code fonctionne lorsque $ user_id est un entier (lorsque je l'utilise manuellement, par exemple 4) mais que je souhaite obtenir de manière dynamique l'id de l'auteur actuel ($user_id).

get_the_author_meta('user_mail') devrait fonctionner sans spécifier $user_id (le codex dit que :)) mais le code est dans functions.php et se trouve en dehors de la boucle, de sorte qu'il ne fonctionne pas. Je commence avec Wordpress et PHP donc je ne sais pas quoi faire ensuite.

Aussi essayé ceci:

global $post;
$user_id=$post->post_author;
14
th3rion

Le moyen le plus simple serait d’utiliser get_post_field() :

$post_author_id = get_post_field( 'post_author', $post_id );

Pour plus de détails sur cette question: regardez cette réponse StackOverflow .

24
Mayeenul Islam

Vous pouvez utiliser les éléments suivants:

/**
 * Gets the author of the specified post. Can also be used inside the loop
 * to get the ID of the author of the current post, by not passing a post ID.
 * Outside the loop you must pass a post ID.
 *
 * @param int $post_id ID of post
 * @return int ID of post author
*/
function wpse119881_get_author( $post_id = 0 ){
     $post = get_post( $post_id );
     return $post->post_author;
}
7
Stephen Harris