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.