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


17

Je dois placer dans la métabox du tableau de bord de post-édition avec le courrier électronique de l'auteur du post (ou d'autres champs de méta utilisateur). Il peut donc être modifié 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 (quand je l'ai mis manuellement par exemple 4) mais que je veux obtenir dynamiquement l'identifiant actuel de l'auteur ( $user_id).

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

A également essayé ceci:

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

Réponses:



9

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;
}

Hmm ça ne marche pas pour moi - je pense que la fonction doit être accrochée à l'un des filtres mais je ne sais pas lequel.
— th3rion

Fonctionne pour moi ... êtes-vous sûr de lui transmettre un ID de poste (valide)?
— Stephen Harris

Mais je veux afficher ce champ méta dans l'écran d'édition pour chaque article (pas seulement pour un) et l'auteur du message peut être différent, donc $ post_id doit être chargé dynamiquement en fonction de l'écran d'édition.
— th3rion

Définissez $post_iddynamiquement. Si vous utilisez l'intérieur d'une métabox, votre rappel de métabox passera l' $postobjet. Donc, vous pouvez utiliser $post->ID(vous pouvez probablement simplement utiliser $post->post_authorpour cette méta.
— Stephen Harris

1
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;
}

Avec cette fonction, j'ai pu afficher le courrier électronique de l'auteur de l'article dans l'écran d'édition de l'article. Je ne sais toujours pas comment le faire fonctionner avec un méta-champ personnalisé, mais je pense que je suis plus proche maintenant.


C'est aussi votre propre question. Vous pouvez le modifier pour clarifier.
— funwhilelost
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.