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;

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

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.


Também é sua própria pergunta. Você pode editá-lo para esclarecer.
— funwhilelost
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.