obtener la identificación del autor de la publicación fuera del bucle

17

Necesito colocarlo en el metabox del panel de edición posterior con el correo electrónico del autor del mensaje (u otros metacampos del usuario). Por lo tanto, se puede editar cuando el administrador revisa esta publicación.

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

Este código funciona cuando $ user_id es un entero (cuando lo puse manualmente, por ejemplo, 4) pero quiero obtener dinámicamente la identificación actual del autor ( $user_id).

get_the_author_meta('user_mail')debería funcionar sin especificar $user_id(el códice dice que :)) pero el código está dentro functions.phpy fuera del bucle, por lo que no funciona. Estoy empezando con Wordpress y PHP, así que no sé qué hacer a continuación.

También probé esto:

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

Respuestas:

9

Puedes usar lo siguiente:

/**
 * 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
fuente
Hmm, no funciona para mí, creo que la función debe estar conectada a uno de los filtros, pero no sé cuál.
th3rion
Funciona para mí ... ¿estás seguro de que le estás pasando una identificación de publicación (válida)?
Stephen Harris
Pero quiero mostrar este metacampo en la pantalla de edición para cada publicación (no solo para una) y el autor de la publicación puede ser diferente, por lo que $ post_id debe cargarse dinámicamente de acuerdo con la pantalla de edición.
th3rion
Establecer $post_iddinámicamente. Si se usa dentro de un metabox, su devolución de llamada metabox pasará el $postobjeto. Para que pueda usar $post->ID(Probablemente pueda usar $post->post_authorpara ese 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;
}

Con esta función pude mostrar el correo electrónico del autor de la publicación en la pantalla de edición de publicaciones. Todavía no sé cómo hacerlo funcionar con metacampo personalizado, pero creo que ahora estoy más cerca.

th3rion
fuente
También es tu propia pregunta. Puedes editarlo para aclararlo.
funwhilelost