obtenir l'identifiant de l'auteur de la publication en dehors de la boucle

13

Je dois insérer une metabox dans le tableau de bord post-édition avec un e-mail post-auteur (ou d'autres champs de méta utilisateur). Il peut donc être modifié lorsque l’administrateur passe en revue ce message.

$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 j'y mets manuellement, par exemple 4) mais que je veux 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, donc cela ne fonctionne pas. Je commence par Wordpress et PHP, donc je ne sais pas quoi faire ensuite.

Aussi essayé ceci:

global $post;
$user_id=$post->post_author;
    
posée th3rion 23.10.2013 - 23:52

3 réponses

0
add_action( 'edit_form_after_title', 'myprefix_edit_form_after_title' );
function myprefix_edit_form_after_title() {
    global $post;
    $author_id=$post->post_author;
    $authord = get_the_author_meta( 'user_email', $author_id);
    echo $authord;
}

Grâce à cette fonction, j'ai pu afficher le courrier électronique de l'auteur après son édition. Je ne sais toujours pas comment le faire fonctionner avec un méta-champ personnalisé, mais je pense que je suis plus proche maintenant.

    
réponse donnée th3rion 24.10.2013 - 08:03
19

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 ce problème: consultez cette réponse StackOverflow .

    
réponse donnée Mayeenul Islam 12.06.2015 - 13:35
6

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;
}
    
réponse donnée Stephen Harris 24.10.2013 - 00:21

Lire d'autres questions sur les étiquettes