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;

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

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.


También es tu propia pregunta. Puedes editarlo para aclararlo.
funwhilelost
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.