obtener ID de autor de publicación fuera del bucle

13

Necesito colocar en el metabox del panel de control de la edición de la entrada con el correo electrónico del autor de la publicación (u otros campos del usuario). Por lo tanto, se puede editar cuando el administrador revise 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 número entero (cuando lo coloco manualmente en el 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 (Codex dice eso :)) pero el código está en functions.php y 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;
    
pregunta th3rion 23.10.2013 - 23:52

3 respuestas

0
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 posterior. Aún no sé cómo hacer que funcione con un campo meta personalizado, pero creo que ahora estoy más cerca.

    
respondido por el th3rion 24.10.2013 - 08:03
19

La forma más sencilla sería utilizar get_post_field() :

$post_author_id = get_post_field( 'post_author', $post_id );

Para obtener más detalles sobre este problema, consulte esta respuesta de StackOverflow .

    
respondido por el Mayeenul Islam 12.06.2015 - 13:35
6

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;
}
    
respondido por el Stephen Harris 24.10.2013 - 00:21

Lea otras preguntas en las etiquetas