obter identificação do autor da postagem fora do loop

17

Preciso colocar no metabox do painel de pós-edição com o email do autor da postagem (ou outros meta-campos do usuário). Portanto, ele pode ser editado quando o administrador revisar esta postagem.

$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
        )
    )
);

Esse código funciona quando $ user_id é um número inteiro (quando eu coloquei manualmente lá, por exemplo, 4), mas eu quero obter dinamicamente o ID do autor atual ( $user_id).

get_the_author_meta('user_mail')deve funcionar sem especificar $user_id(o codex diz isso :)), mas o código está dentro functions.phpe fora do loop para que não funcione. Estou começando com Wordpress e PHP, então não sei o que fazer a seguir.

Também tentei isso:

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

Respostas:

9

Você pode usar o seguinte:

/**
 * 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;
}
Stephen Harris
fonte
Hmm, ele não funciona para mim - acho que a função deve estar conectada a um dos filtros, mas não sei qual.
Th3rion
Funciona para mim ... tem certeza de que está passando um ID de postagem (válido)?
Stephen Harris
Mas eu quero exibir esse meta campo na tela de edição para cada postagem (não apenas para uma) e o autor da postagem pode ser diferente, portanto $ post_id deve ser carregado dinamicamente de acordo com a tela de edição.
th3rion
Definir $post_iddinamicamente. Se você estiver usando dentro de um metabox, seu retorno de chamada metabox receberá o $postobjeto. Assim você pode usar $post->ID(Você provavelmente só pode usar $post->post_authorpara essa meta.
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;
}

Com esta função, pude exibir o e-mail do autor da postagem na tela de edição da publicação. Ainda não sei como fazê-lo funcionar com o meta-campo personalizado, mas acho que estou mais perto agora.

th3rion
fonte
Também é sua própria pergunta. Você pode editá-lo para esclarecer.
funwhilelost